[78] 子集
Javascript
var subsets = function (nums) {
let ans = [];
backtrack([], 0);
return ans;
function backtrack(track, start) {
ans.push(track);
for (let i = start; i < nums.length; i++) {
backtrack(track.concat(nums[i]), i + 1);
}
}
};
Rust
fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
let mut ans = Vec::new();
let mut track = Vec::new();
backtrack(&nums, &mut track, 0, &mut ans);
return ans;
fn backtrack(nums: &Vec<i32>, track: &mut Vec<i32>, start: usize, ans: &mut Vec<Vec<i32>>) {
ans.push(track.clone());
for i in start..nums.len() {
track.push(nums[i]);
backtrack(nums, track, i + 1, ans);
track.pop();
}
}
}