Java實現-子集

Narasimha_Karumanchi發表於2017-06-30

給定一個含不同整數的集合,返回其所有的子集

 注意事項

子集中的元素排列必須是非降序的,解集必須不包含重複的子集

樣例

如果 S = [1,2,3],有如下的解:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]
class Solution {
    /**
     * @param S: A set of numbers.
     * @return: A list of lists. All valid subsets.
     */
    public ArrayList<ArrayList<Integer>> subsets(int[] nums) {
        // write your code here
        Arrays.sort(nums);
        ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
		ArrayList<Integer> tempList=new ArrayList<Integer>();
		backTracking(nums, 0, result, tempList);
		return result;
    }
    private static void backTracking(int[] nums, int start, ArrayList<ArrayList<Integer>> result, ArrayList<Integer> tempList){
		result.add(new ArrayList<Integer>(tempList));
		for(int i=start;i<nums.length;i++){
			tempList.add(nums[i]);
			backTracking(nums, i+1, result, tempList);
			tempList.remove(tempList.size()-1);
		}
	}

}


相關文章