国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

力扣--深度優(yōu)先算法/回溯算法47.全排列 Ⅱ

這篇具有很好參考價(jià)值的文章主要介紹了力扣--深度優(yōu)先算法/回溯算法47.全排列 Ⅱ。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

力扣--深度優(yōu)先算法/回溯算法47.全排列 Ⅱ,算法,leetcode,深度優(yōu)先,數(shù)據(jù)結(jié)構(gòu),c++,c語言

思路分析:文章來源地址http://www.zghlxwxcb.cn/news/detail-839346.html

  1. 使用DFS算法進(jìn)行全排列,遞歸地嘗試每個(gè)可能的排列方式。
  2. 使用 path 向量保存當(dāng)前正在生成的排列,當(dāng)其大小達(dá)到輸入數(shù)組的大小時(shí),將其加入結(jié)果集。
  3. 使用 numvisited 向量標(biāo)記每個(gè)數(shù)字是否已經(jīng)被訪問過,以確保每個(gè)數(shù)字在一個(gè)排列中只使用一次。
  4. 在遞歸過程中,對(duì)于每個(gè)未訪問的數(shù)字,將其加入排列,標(biāo)記為已訪問,然后遞歸生成下一個(gè)位置的數(shù)字。
  5. 在遞歸完成后,需要回溯,撤銷對(duì)當(dāng)前數(shù)字的標(biāo)記,同時(shí)將其從排列中移除,以嘗試其他可能的排列。
  6. 使用額外的 visited 向量標(biāo)記每個(gè)數(shù)字是否已經(jīng)在當(dāng)前排列中被訪問過,避免重復(fù)訪問。
class Solution {
    vector<vector<int>> result; // 存儲(chǔ)最終的全排列結(jié)果
    vector<int> path; // 存儲(chǔ)當(dāng)前正在生成的排列

    // 深度優(yōu)先搜索函數(shù),生成全排列
    void dfs(vector<int>& nums, vector<bool> numvisited) {
        vector<bool> visited(21, false); // 用于標(biāo)記數(shù)字是否被訪問過

        for (int i = 0; i < nums.size(); i++) {
            // 如果當(dāng)前數(shù)字已經(jīng)在當(dāng)前排列中使用過,則跳過
            if (numvisited[i] == true)
                continue;

            path.push_back(nums[i]); // 將當(dāng)前數(shù)字加入排列
            numvisited[i] = true; // 標(biāo)記當(dāng)前數(shù)字為已訪問

            // 如果當(dāng)前排列長(zhǎng)度等于數(shù)組長(zhǎng)度,說明已經(jīng)生成一個(gè)完整的排列,加入結(jié)果集
            if (path.size() == nums.size())
                result.push_back(path);

            // 如果當(dāng)前數(shù)字在當(dāng)前排列中未被訪問過,則遞歸生成下一個(gè)位置的數(shù)字
            if (visited[nums[i] + 10] != true) {
                visited[nums[i] + 10] = true;
                dfs(nums, numvisited);
            }

            path.pop_back(); // 回溯,將當(dāng)前數(shù)字從排列中移除
            numvisited[i] = false; // 回溯,撤銷對(duì)當(dāng)前數(shù)字的標(biāo)記
        }

        visited.clear(); // 清除標(biāo)記數(shù)組,節(jié)約空間。
    }

public:
    // 主函數(shù),用于生成給定數(shù)組的全排列(包含重復(fù)元素)
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        vector<bool> numvisited(nums.size(), false); // 初始化數(shù)字訪問標(biāo)記數(shù)組
        dfs(nums, numvisited); // 調(diào)用深度優(yōu)先搜索函數(shù)生成全排列
        return result; // 返回最終結(jié)果
    }
};

到了這里,關(guān)于力扣--深度優(yōu)先算法/回溯算法47.全排列 Ⅱ的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • leetcode46. 全排列(回溯算法-java)

    leetcode46. 全排列(回溯算法-java)

    來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/permutations 給定一個(gè)不含重復(fù)數(shù)字的數(shù)組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 示例 1: 輸入:nums = [1,2,3] 輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 輸入:nums = [0,1] 輸出:[[0,1],[1,0]]

    2024年02月11日
    瀏覽(16)
  • Day 29 | 回溯 491.遞增子序列 、 46.全排列 、47.全排列 II

    題目 文章講解 視頻講解 思路:去重原則:元素,樹層不可以重復(fù)取,樹枝可以。hash這種去重方式不需要回溯 題目 文章講解 視頻講解 思路:used[i]這種去重方式需要回溯 注意比較兩種去重方式 permute(排列) 題目 文章講解 視頻講解 思路:去重之前一定做排序,used[i-1] =

    2024年01月25日
    瀏覽(53)
  • ※【回溯】【深度優(yōu)先前序】Leetcode 257. 二叉樹的所有路徑

    ※【回溯】【深度優(yōu)先前序】Leetcode 257. 二叉樹的所有路徑

    ---------------????257. 二叉樹的所有路徑 題目鏈接????------------------- 時(shí)間復(fù)雜度O(N) 空間復(fù)雜度O(N) 深度優(yōu)先遍歷 添加了 StringBulider 替代字符串拼接提升效率 toString() 轉(zhuǎn)化為String .append() 添加元素 時(shí)間復(fù)雜度O(N) 空間復(fù)雜度O(N)

    2024年02月20日
    瀏覽(25)
  • Day31 46全排列 47全排列II 回溯去重tips 51N皇后 37解數(shù)獨(dú)

    Day31 46全排列 47全排列II 回溯去重tips 51N皇后 37解數(shù)獨(dú)

    給定一個(gè) 沒有重復(fù) 數(shù)字的序列,返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] ?排列問題與組合問題的不同之處就在于,沒有startIndex,同時(shí)需要設(shè)置一個(gè)used數(shù)組,遍歷過的就設(shè)置成true,下次遇到時(shí)跳過。 給定一個(gè)可包含重

    2024年01月20日
    瀏覽(22)
  • 算法學(xué)習(xí)——LeetCode力扣回溯篇2

    算法學(xué)習(xí)——LeetCode力扣回溯篇2

    40. 組合總和 II - 力扣(LeetCode) 描述 給定一個(gè)候選人編號(hào)的集合 candidates 和一個(gè)目標(biāo)數(shù) target ,找出 candidates 中所有可以使數(shù)字和為 target 的組合。 candidates 中的每個(gè)數(shù)字在每個(gè)組合中只能使用 一次 。 注意:解集不能包含重復(fù)的組合。 示例 示例 1: 輸入: candidates = [10,1,2,7

    2024年02月20日
    瀏覽(21)
  • LeetCode講解篇之47. 全排列 II

    LeetCode講解篇之47. 全排列 II

    初始化一個(gè)nums中元素是否被訪問的數(shù)組used、記錄還需要遞歸的深度deep 遍歷nums 如果當(dāng)前元素被訪問過或者當(dāng)前元素等于前一個(gè)元素且前一個(gè)元素沒被訪問過就跳過該次遍歷 否則選擇當(dāng)前元素,繼續(xù)遞歸 直到deep為0,將此次遞歸選擇的數(shù)組加入到結(jié)果集,退出遞歸 直到搜索

    2024年01月20日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】圖遍歷算法 ( 深度優(yōu)先搜索 DFS | 深度優(yōu)先搜索和廣度優(yōu)先搜索 | 深度優(yōu)先搜索基本思想 | 深度優(yōu)先搜索算法步驟 | 深度優(yōu)先搜索理論示例 )

    【數(shù)據(jù)結(jié)構(gòu)與算法】圖遍歷算法 ( 深度優(yōu)先搜索 DFS | 深度優(yōu)先搜索和廣度優(yōu)先搜索 | 深度優(yōu)先搜索基本思想 | 深度優(yōu)先搜索算法步驟 | 深度優(yōu)先搜索理論示例 )

    圖 的 遍歷 就是 對(duì) 圖 中的 結(jié)點(diǎn) 進(jìn)行遍歷 , 遍歷 結(jié)點(diǎn) 有如下兩種策略 : 深度優(yōu)先搜索 DFS 廣度優(yōu)先搜索 BFS \\\" 深度優(yōu)先搜索 \\\" 英文名稱是 Depth First Search , 簡(jiǎn)稱 DFS ; DFS 基本思想 : 訪問第一個(gè)鄰接結(jié)點(diǎn) : 從 起始點(diǎn) 出發(fā) , 該 起始點(diǎn) 可能有 若干 鄰接結(jié)點(diǎn) , 訪問 第一個(gè) 鄰接結(jié)點(diǎn)

    2024年02月02日
    瀏覽(21)
  • LeetCode46全排列(回溯入門)

    LeetCode46全排列(回溯入門)

    這里分類和匯總了欣宸的全部原創(chuàng)(含配套源碼):https://github.com/zq2599/blog_demos 難度:中等 給定一個(gè)不含重復(fù)數(shù)字的數(shù)組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案 示例 1 示例 2 示例 3 在很多刷題文章和書籍中,此題都被用做回溯算法的第一題,可見該題

    2024年02月10日
    瀏覽(17)
  • LeetCode.46. 全排列(回溯法入門)

    LeetCode.46. 全排列(回溯法入門)

    寫在前面: 題目鏈接:LeetCode.46. 全排列 編程語言:C++ 題目難度:中等 給定一個(gè)不含重復(fù)數(shù)字的數(shù)組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 示例 1: 輸入:nums = [1,2,3] 輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2: 輸入:nums = [0,1] 輸出:

    2024年02月06日
    瀏覽(18)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 題目要求我們返回一個(gè)數(shù)組長(zhǎng)度為n的數(shù)組,必須含有1~n的所有數(shù),并且從左到右,相鄰的元素依次相減,它們的差,必

    2024年01月25日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包