摘要:本題與類似,都是用回溯法。求中個數的不同組合,很明顯我們需要注意的就是每個數字只能出現一次,這點與不同。
Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
本題與Combinations Sum類似,都是用回溯法。求1...n中k個數的不同組合,很明顯我們需要注意的就是每個數字只能出現一次,這點與Combinations Sum不同。
代碼
public class Solution { List> res=new ArrayList
>(); int num=0; public List
> combine(int n, int k) { num=n; if(n==0||k==0) return res; combineHelper(1,k,new ArrayList
()); return res; } private void combineHelper(int index,int count,List pre){ if(count==0){ res.add(pre); return; } for(int i=index;i<=num;i++){ List cur=new ArrayList (pre); cur.add(i); combineHelper(i+1,count-1,cur); } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69791.html
摘要:當右括號和左括號的剩余量均為時,及為一個最終結果。而則會在直接原來的對象上進行修改,其指針仍然指向原來的對象。因此在遞歸的過程中使用一定要注意,對對象的修改不要相互干擾。 題目要求 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses....
摘要:題目要求也就是說,將數字對應的字母的排列組合的的所有可能結果都枚舉出來,順序不唯一。這種類型的題目一般需要求出上一種情況的前提下才可以得知下一種情況。這一種數據結構通過來實現。相比于上一種思路中,內存占用更小,而且更加靈活。 題目要求 Given a digit string, return all possible letter combinations that the numbe...
摘要:在這道題中,我結合了遞歸的思想來。就是將當前的值作為一個潛在的結果值加入一個結果數組將數組作為當前結果傳入下一輪遞歸。 題目要求 Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique combinations in C where the ca...
摘要:回溯算法在算法過程中就是類似于枚舉算法,嘗試在搜索過程中找到問題的解。 回溯算法( BackTrack )在算法過程中就是類似于枚舉算法,嘗試在搜索過程中找到問題的解。 使用回溯算法解題的一般步驟 使用回溯算法解題的一般步驟: 針對所給問題得出一般的解空間 用回溯搜索方法搜索解空間 使用深度優先去搜索所有解并包含適當的剪枝操作 LeetCode 使用回溯算法的題目主要有 36 題,...
摘要:復雜度思路注意的地方,要限制左括號和右括號。每出現一次左括號,就相對于限定了,最多只能出現那么多右括號。所以,為了完成這種限定,用來控制。不然會有的情況出現。 LeetCode[22] Generate Parentheses Given n pairs of parentheses, write a function to generate all combinations of ...
閱讀 955·2019-08-30 14:24
閱讀 987·2019-08-30 14:13
閱讀 1799·2019-08-29 17:21
閱讀 2661·2019-08-29 13:44
閱讀 1654·2019-08-29 11:04
閱讀 438·2019-08-26 10:44
閱讀 2564·2019-08-23 14:04
閱讀 908·2019-08-23 12:08