給定乙個整型陣列, 你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。
示例:
輸入:[4
,6,7
,7]輸出:[[
4,6]
,[4,
7],[
4,6,
7],[
4,6,
7,7]
,[6,
7],[
6,7,
7],[
7,7]
,[4,
7,7]
]
說明:
這裡要說明一下:題目要求的是遞增子串行,子串行和子串的唯一區別是:子串行可以不連續。這裡很明顯:子串行要保持原來陣列中每個數字的相對順序。
借助set去重:
class
solution
return vres;
}void
dfs(vector<
int>
& nums,
int pos, vector<
int> cur)}}
};
在dfs的過程中進行剪枝去重:
通過回溯時,儲存彈出的元素實現,保證彈出的元素不會再進入當前陣列中。
class
solution
void
dfs(vector<
int>
& nums,
int pos, vector<
int> cur)}}
};
leetcode491 遞增子串行
這一題使用dfs回溯法,我們先來分析一下這種方法的時間複雜度 如圖。由於我們知道陣列的長度不超過15,所以這顆樹最壞的情況的啊hi見複雜度為2 15,也就是幾十萬的計算量,是可以接收的。那麼我們根據思路寫出演算法 class solution public void dfs set ans,list...
leetCode 491 遞增子串行
給定乙個整型陣列,你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。示例 輸入 4,6,7,7 輸出 4 6 4,7 4 6,7 4 6,7 7 6,7 6 7,7 7 7 4,7 7 說明 給定陣列的長度不會超過15。陣列中的整數範圍是 100 100 給定陣列中可能包含重複數字,相...
leetcode 491 遞增子串行
給定乙個整型陣列,你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。示例 輸入 4,6,7,7 輸出 4,6 4,7 4,6,7 4,6,7,7 6,7 6,7,7 7,7 4,7,7 說明 給定陣列的長度不會超過15。陣列中的整數範圍是 100,100 給定陣列中可能包含重複數字,相...