[leetCode]78. 子集
阿新 • • 發佈:2020-11-06
[leetCode]78. 子集
16/100
儲存草稿
釋出文章
renweiyi1487
未選擇任何檔案
題目
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
說明:解集不能包含重複的子集。
示例:
輸入: nums = [1,2,3]
輸出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
回溯
回溯法可以將該問題抽象成一棵樹,與其他問題(只需新增葉子節點不同)該題需要新增樹上的所有節點
class Solution { private List<List<Integer>> result = new ArrayList<>(); private List<Integer> path = new ArrayList<>(); public List<List<Integer>> subsets(int[] nums) { backTracking(nums, 0); return result; } private void backTracking(int[] nums, int startIndex) { // 收集子集 result.add(new ArrayList<>(path)); if (startIndex == nums.length) { return; } for (int i = startIndex; i < nums.length; i++) { path.add(nums[i]); backTracking(nums, i + 1); path.remove(path.size() - 1); } } }
題目
連結:https://leetcode-cn.com/problems/subsets
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
說明:解集不能包含重複的子集。
示例:
輸入: nums = [1,2,3]
輸出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
回溯
回溯法可以將該問題抽象成一棵樹,與其他問題(只需新增葉子節點不同)該題需要新增樹上的所有節點
在這裡插入圖片描述
class Solution {
private List<List<Integer>> result = new ArrayList<>(); private List<Integer> path = new ArrayList<>(); public List<List<Integer>> subsets(int[] nums) { backTracking(nums, 0); return result; } private void backTracking(int[] nums, int startIndex) { // 收集子集 result.add(new ArrayList<>(path)); if (startIndex == nums.length) { return; } for (int i = startIndex; i < nums.length; i++) { path.add(nums[i]); backTracking(nums, i + 1); path.remove(path.size() - 1); } }
}
Markdown 869 字數 56 行數 當前行 55, 當前列 0 文章已儲存19:17:23HTML 627 字數 39 段落