代碼隨想錄訓(xùn)練營(yíng)29天-回溯

491. 遞增子序列

給你一個(gè)整數(shù)數(shù)組 nums 鼎俘,找出并返回所有該數(shù)組中不同的遞增子序列退盯,遞增子序列中 至少有兩個(gè)元素 。你可以按 任意順序 返回答案谷暮。

數(shù)組中可能含有重復(fù)元素,如出現(xiàn)兩個(gè)整數(shù)相等,也可以視作遞增序列的一種特殊情況企孩。

輸入:nums = [4,6,7,7]
輸出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]
class Solution {
private:
    vector<int> path;
    set<vector<int>> result;
    bool isGreaterVector(const vector<int>& nums) {
        int size = path.size();
        if (size <= 1) {
            return false;
        }

        for (int i = 1; i < nums.size(); i++) {
            //cout << "eee" << i << endl;
            if (nums[i] < nums[i-1]) {
                return false;
            }
        }
        return true;
    }
    void backTrack(vector<int>& nums, int startIndex) {
        int size = path.size();
        if (isGreaterVector(path)) {
            result.insert(path);
        }
        if (startIndex >= nums.size()) {
            return;
        }
        for (int i = startIndex; i < nums.size(); i++) {
            //cout << "fff" << i << endl;
            path.push_back(nums[i]);
            backTrack(nums, i+1);
            path.pop_back();
        }

    }
public:
    vector<vector<int>> findSubsequences(vector<int>& nums) {
        backTrack(nums, 0);
        vector<vector<int>> final(result.begin(), result.end());
        return final;
    }
};

46. 全排列

給定一個(gè)不含重復(fù)數(shù)字的數(shù)組 nums ,返回其 所有可能的全排列 袁稽。你可以 按任意順序 返回答案勿璃。

輸入:nums = [1,2,3]
輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
class Solution {
private:
    vector<int> path;
    vector<vector<int>> result;
    //bool checkUsed(vector<bool>)
    void backTrack(vector<int>& nums, vector<bool>& used) {
        if (path.size() == nums.size()) {
            result.emplace_back(path);
        }
        for (int i = 0; i < nums.size(); i++) {
            if (used[i] == true) {
                continue;
            }
            path.push_back(nums[i]);
            used[i] = true;
            backTrack(nums, used);
            used[i] = false;
            path.pop_back();
        }
    }
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<bool> used(nums.size(), false);
        backTrack(nums, used);
        return result;
    }
};

47. 全排列 II

給定一個(gè)可包含重復(fù)數(shù)字的序列 nums ,按任意順序 返回所有不重復(fù)的全排列。
示例 1:
輸入:nums = [1,1,2]
輸出:
[[1,1,2],
[1,2,1],
[2,1,1]]

class Solution {
private:
    vector<int> path;
    set<vector<int>> result;
    //bool checkUsed(vector<bool>)
    void backTrack(vector<int>& nums, vector<bool>& used) {
        if (path.size() == nums.size()) {
            result.insert(path);
        }
        for (int i = 0; i < nums.size(); i++) {
            if (used[i] == true) {
                continue;
            }
            path.push_back(nums[i]);
            used[i] = true;
            backTrack(nums, used);
            used[i] = false;
            path.pop_back();
        }
    }
public:
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        vector<bool> used(nums.size(), false);
        backTrack(nums, used);
        vector<vector<int>> final(result.begin(), result.end());
        return final;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末补疑,一起剝皮案震驚了整個(gè)濱河市歧沪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莲组,老刑警劉巖诊胞,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锹杈,居然都是意外死亡撵孤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門竭望,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邪码,“玉大人,你說我怎么就攤上這事咬清”兆ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵旧烧,是天一觀的道長(zhǎng)喻圃。 經(jīng)常有香客問我,道長(zhǎng)粪滤,這世上最難降的妖魔是什么斧拍? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮杖小,結(jié)果婚禮上肆汹,老公的妹妹穿的比我還像新娘。我一直安慰自己予权,他們只是感情好昂勉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扫腺,像睡著了一般岗照。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笆环,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天攒至,我揣著相機(jī)與錄音,去河邊找鬼躁劣。 笑死迫吐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的账忘。 我是一名探鬼主播志膀,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熙宇,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了溉浙?” 一聲冷哼從身側(cè)響起烫止,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎戳稽,沒想到半個(gè)月后烈拒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡广鳍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吓妆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赊时。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖行拢,靈堂內(nèi)的尸體忽然破棺而出祖秒,到底是詐尸還是另有隱情,我是刑警寧澤舟奠,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布竭缝,位于F島的核電站,受9級(jí)特大地震影響沼瘫,放射性物質(zhì)發(fā)生泄漏抬纸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一耿戚、第九天 我趴在偏房一處隱蔽的房頂上張望湿故。 院中可真熱鬧,春花似錦膜蛔、人聲如沸坛猪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)墅茉。三九已至,卻和暖如春呜呐,著一層夾襖步出監(jiān)牢的瞬間就斤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工蘑辑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留战转,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓以躯,卻偏偏與公主長(zhǎng)得像槐秧,于是被迫代替她去往敵國(guó)和親啄踊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容