Skip to content

Commit 0d8ecb4

Browse files
committed
feat: add solutions to lcci problem: No.08.04
No.08.04.Power Set
1 parent c3b011c commit 0d8ecb4

File tree

4 files changed

+179
-0
lines changed

4 files changed

+179
-0
lines changed

lcci/08.04.Power Set/README.md

+72
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,78 @@ function dfs(nums, depth, prev, res) {
7474
}
7575
```
7676

77+
### **TypeScript**
78+
79+
```ts
80+
function subsets(nums: number[]): number[][] {
81+
const res = [[]];
82+
nums.forEach(num => {
83+
res.forEach(item => {
84+
res.push(item.concat(num));
85+
});
86+
});
87+
return res;
88+
}
89+
```
90+
91+
```rust
92+
function subsets(nums: number[]): number[][] {
93+
const n = nums.length;
94+
const res = [];
95+
const list = [];
96+
const dfs = (i: number) => {
97+
if (i === n) {
98+
res.push([...list]);
99+
return;
100+
}
101+
list.push(nums[i]);
102+
dfs(i + 1);
103+
list.pop();
104+
dfs(i + 1);
105+
};
106+
dfs(0);
107+
return res;
108+
}
109+
```
110+
111+
### **Rust**
112+
113+
```rust
114+
impl Solution {
115+
pub fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
116+
let n = nums.len();
117+
let mut res: Vec<Vec<i32>> = vec![vec![]];
118+
for i in 0..n {
119+
for j in 0..res.len() {
120+
res.push(vec![..res[j].clone(), vec![nums[i]]].concat());
121+
}
122+
}
123+
res
124+
}
125+
}
126+
```
127+
128+
```rust
129+
impl Solution {
130+
fn dfs(nums: &Vec<i32>, i: usize, res: &mut Vec<Vec<i32>>, list: &mut Vec<i32>) {
131+
if i == nums.len() {
132+
res.push(list.clone());
133+
return;
134+
}
135+
list.push(nums[i]);
136+
Self::dfs(nums, i + 1, res, list);
137+
list.pop();
138+
Self::dfs(nums, i + 1, res, list);
139+
}
140+
141+
pub fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
142+
let mut res = vec![];
143+
Self::dfs(&nums, 0, &mut res, &mut vec![]);
144+
res
145+
}
146+
}
147+
```
148+
77149
### **...**
78150

79151
```

lcci/08.04.Power Set/README_EN.md

+72
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,78 @@ function dfs(nums, depth, prev, res) {
8181
}
8282
```
8383

84+
### **TypeScript**
85+
86+
```ts
87+
function subsets(nums: number[]): number[][] {
88+
const res = [[]];
89+
nums.forEach(num => {
90+
res.forEach(item => {
91+
res.push(item.concat(num));
92+
});
93+
});
94+
return res;
95+
}
96+
```
97+
98+
```rust
99+
function subsets(nums: number[]): number[][] {
100+
const n = nums.length;
101+
const res = [];
102+
const list = [];
103+
const dfs = (i: number) => {
104+
if (i === n) {
105+
res.push([...list]);
106+
return;
107+
}
108+
list.push(nums[i]);
109+
dfs(i + 1);
110+
list.pop();
111+
dfs(i + 1);
112+
};
113+
dfs(0);
114+
return res;
115+
}
116+
```
117+
118+
### **Rust**
119+
120+
```rust
121+
impl Solution {
122+
pub fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
123+
let n = nums.len();
124+
let mut res: Vec<Vec<i32>> = vec![vec![]];
125+
for i in 0..n {
126+
for j in 0..res.len() {
127+
res.push(vec![..res[j].clone(), vec![nums[i]]].concat());
128+
}
129+
}
130+
res
131+
}
132+
}
133+
```
134+
135+
```rust
136+
impl Solution {
137+
fn dfs(nums: &Vec<i32>, i: usize, res: &mut Vec<Vec<i32>>, list: &mut Vec<i32>) {
138+
if i == nums.len() {
139+
res.push(list.clone());
140+
return;
141+
}
142+
list.push(nums[i]);
143+
Self::dfs(nums, i + 1, res, list);
144+
list.pop();
145+
Self::dfs(nums, i + 1, res, list);
146+
}
147+
148+
pub fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
149+
let mut res = vec![];
150+
Self::dfs(&nums, 0, &mut res, &mut vec![]);
151+
res
152+
}
153+
}
154+
```
155+
84156
### **...**
85157

86158
```

lcci/08.04.Power Set/Solution.rs

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
impl Solution {
2+
fn dfs(nums: &Vec<i32>, i: usize, res: &mut Vec<Vec<i32>>, list: &mut Vec<i32>) {
3+
if i == nums.len() {
4+
res.push(list.clone());
5+
return;
6+
}
7+
list.push(nums[i]);
8+
Self::dfs(nums, i + 1, res, list);
9+
list.pop();
10+
Self::dfs(nums, i + 1, res, list);
11+
}
12+
13+
pub fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
14+
let mut res = vec![];
15+
Self::dfs(&nums, 0, &mut res, &mut vec![]);
16+
res
17+
}
18+
}

lcci/08.04.Power Set/Solution.ts

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function subsets(nums: number[]): number[][] {
2+
const n = nums.length;
3+
const res = [];
4+
const list = [];
5+
const dfs = (i: number) => {
6+
if (i === n) {
7+
res.push([...list]);
8+
return;
9+
}
10+
list.push(nums[i]);
11+
dfs(i + 1);
12+
list.pop();
13+
dfs(i + 1);
14+
};
15+
dfs(0);
16+
return res;
17+
}

0 commit comments

Comments
 (0)