Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 786f248

Browse files
committed
feat: add solutions to lc problems
- No.0062.Unique Paths - No.0063.Unique Paths II - No.0213.House Robber II - No.1855.Maximum Distance Between a Pair of Values
1 parent c504cd4 commit 786f248

File tree

14 files changed

+422
-2
lines changed

14 files changed

+422
-2
lines changed

‎solution/0000-0099/0062.Unique Paths/README.md‎

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@
5858

5959
<!-- 这里可写通用的实现逻辑 -->
6060

61-
动态规划
61+
**方法一:动态规划**
6262

63-
假设 `dp[i][j]` 表示到达网格 `(i,j)` 的路径数,则 `dp[i][j] = dp[i - 1][j] + dp[i][j - 1]`
63+
假设 `dp[i][j]` 表示到达网格 `(i,j)` 的路径数,则 `dp[i][j] = dp[i - 1][j] + dp[i][j - 1]`
6464

6565
<!-- tabs:start -->
6666

@@ -153,6 +153,23 @@ func uniquePaths(m int, n int) int {
153153
}
154154
```
155155

156+
### **Rust**
157+
158+
```rust
159+
impl Solution {
160+
pub fn unique_paths(m: i32, n: i32) -> i32 {
161+
let (m, n) = (m as usize, n as usize);
162+
let mut dp = vec![1; n];
163+
for i in 1..m {
164+
for j in 1..n {
165+
dp[j] += dp[j - 1];
166+
}
167+
}
168+
dp[n - 1]
169+
}
170+
}
171+
```
172+
156173
### **...**
157174

158175
```

‎solution/0000-0099/0062.Unique Paths/README_EN.md‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,23 @@ func uniquePaths(m int, n int) int {
127127
}
128128
```
129129

130+
### **Rust**
131+
132+
```rust
133+
impl Solution {
134+
pub fn unique_paths(m: i32, n: i32) -> i32 {
135+
let (m, n) = (m as usize, n as usize);
136+
let mut dp = vec![1; n];
137+
for i in 1..m {
138+
for j in 1..n {
139+
dp[j] += dp[j - 1];
140+
}
141+
}
142+
dp[n - 1]
143+
}
144+
}
145+
```
146+
130147
### **...**
131148

132149
```
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
impl Solution {
2+
pub fn unique_paths(m: i32, n: i32) -> i32 {
3+
let (m, n) = (m as usize, n as usize);
4+
let mut dp = vec![1; n];
5+
for i in 1..m {
6+
for j in 1..n {
7+
dp[j] += dp[j - 1];
8+
}
9+
}
10+
dp[n - 1]
11+
}
12+
}

‎solution/0000-0099/0063.Unique Paths II/README.md‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,73 @@ func uniquePathsWithObstacles(obstacleGrid [][]int) int {
163163
}
164164
```
165165

166+
### **TypeScript**
167+
168+
```ts
169+
function uniquePathsWithObstacles(obstacleGrid: number[][]): number {
170+
const m = obstacleGrid.length;
171+
const n = obstacleGrid[0].length;
172+
const dp = Array.from({ length: m }, () => new Array(n).fill(0));
173+
for (let i = 0; i < m; i++) {
174+
if (obstacleGrid[i][0] === 1) {
175+
break;
176+
}
177+
dp[i][0] = 1;
178+
}
179+
for (let i = 0; i < n; i++) {
180+
if (obstacleGrid[0][i] === 1) {
181+
break;
182+
}
183+
dp[0][i] = 1;
184+
}
185+
for (let i = 1; i < m; i++) {
186+
for (let j = 1; j < n; j++) {
187+
if (obstacleGrid[i][j] === 1) {
188+
continue;
189+
}
190+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
191+
}
192+
}
193+
return dp[m - 1][n - 1];
194+
}
195+
```
196+
197+
### **Rust**
198+
199+
```rust
200+
impl Solution {
201+
pub fn unique_paths_with_obstacles(obstacle_grid: Vec<Vec<i32>>) -> i32 {
202+
let m = obstacle_grid.len();
203+
let n = obstacle_grid[0].len();
204+
if obstacle_grid[0][0] == 1 || obstacle_grid[m - 1][n - 1] == 1 {
205+
return 0;
206+
}
207+
let mut dp = vec![vec![0; n]; m];
208+
for i in 0..n {
209+
if obstacle_grid[0][i] == 1 {
210+
break;
211+
}
212+
dp[0][i] = 1;
213+
}
214+
for i in 0..m {
215+
if obstacle_grid[i][0] == 1 {
216+
break;
217+
}
218+
dp[i][0] = 1;
219+
}
220+
for i in 1..m {
221+
for j in 1..n {
222+
if obstacle_grid[i][j] == 1 {
223+
continue;
224+
}
225+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
226+
}
227+
}
228+
dp[m - 1][n - 1]
229+
}
230+
}
231+
```
232+
166233
### **...**
167234

168235
```

‎solution/0000-0099/0063.Unique Paths II/README_EN.md‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,73 @@ func uniquePathsWithObstacles(obstacleGrid [][]int) int {
146146
}
147147
```
148148

149+
### **TypeScript**
150+
151+
```ts
152+
function uniquePathsWithObstacles(obstacleGrid: number[][]): number {
153+
const m = obstacleGrid.length;
154+
const n = obstacleGrid[0].length;
155+
const dp = Array.from({ length: m }, () => new Array(n).fill(0));
156+
for (let i = 0; i < m; i++) {
157+
if (obstacleGrid[i][0] === 1) {
158+
break;
159+
}
160+
dp[i][0] = 1;
161+
}
162+
for (let i = 0; i < n; i++) {
163+
if (obstacleGrid[0][i] === 1) {
164+
break;
165+
}
166+
dp[0][i] = 1;
167+
}
168+
for (let i = 1; i < m; i++) {
169+
for (let j = 1; j < n; j++) {
170+
if (obstacleGrid[i][j] === 1) {
171+
continue;
172+
}
173+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
174+
}
175+
}
176+
return dp[m - 1][n - 1];
177+
}
178+
```
179+
180+
### **Rust**
181+
182+
```rust
183+
impl Solution {
184+
pub fn unique_paths_with_obstacles(obstacle_grid: Vec<Vec<i32>>) -> i32 {
185+
let m = obstacle_grid.len();
186+
let n = obstacle_grid[0].len();
187+
if obstacle_grid[0][0] == 1 || obstacle_grid[m - 1][n - 1] == 1 {
188+
return 0;
189+
}
190+
let mut dp = vec![vec![0; n]; m];
191+
for i in 0..n {
192+
if obstacle_grid[0][i] == 1 {
193+
break;
194+
}
195+
dp[0][i] = 1;
196+
}
197+
for i in 0..m {
198+
if obstacle_grid[i][0] == 1 {
199+
break;
200+
}
201+
dp[i][0] = 1;
202+
}
203+
for i in 1..m {
204+
for j in 1..n {
205+
if obstacle_grid[i][j] == 1 {
206+
continue;
207+
}
208+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
209+
}
210+
}
211+
dp[m - 1][n - 1]
212+
}
213+
}
214+
```
215+
149216
### **...**
150217

151218
```
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
impl Solution {
2+
pub fn unique_paths_with_obstacles(obstacle_grid: Vec<Vec<i32>>) -> i32 {
3+
let m = obstacle_grid.len();
4+
let n = obstacle_grid[0].len();
5+
if obstacle_grid[0][0] == 1 || obstacle_grid[m - 1][n - 1] == 1 {
6+
return 0;
7+
}
8+
let mut dp = vec![vec![0; n]; m];
9+
for i in 0..n {
10+
if obstacle_grid[0][i] == 1 {
11+
break;
12+
}
13+
dp[0][i] = 1;
14+
}
15+
for i in 0..m {
16+
if obstacle_grid[i][0] == 1 {
17+
break;
18+
}
19+
dp[i][0] = 1;
20+
}
21+
for i in 1..m {
22+
for j in 1..n {
23+
if obstacle_grid[i][j] == 1 {
24+
continue;
25+
}
26+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
27+
}
28+
}
29+
dp[m - 1][n - 1]
30+
}
31+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function uniquePathsWithObstacles(obstacleGrid: number[][]): number {
2+
const m = obstacleGrid.length;
3+
const n = obstacleGrid[0].length;
4+
const dp = Array.from({ length: m }, () => new Array(n).fill(0));
5+
for (let i = 0; i < m; i++) {
6+
if (obstacleGrid[i][0] === 1) {
7+
break;
8+
}
9+
dp[i][0] = 1;
10+
}
11+
for (let i = 0; i < n; i++) {
12+
if (obstacleGrid[0][i] === 1) {
13+
break;
14+
}
15+
dp[0][i] = 1;
16+
}
17+
for (let i = 1; i < m; i++) {
18+
for (let j = 1; j < n; j++) {
19+
if (obstacleGrid[i][j] === 1) {
20+
continue;
21+
}
22+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
23+
}
24+
}
25+
return dp[m - 1][n - 1];
26+
}

‎solution/0200-0299/0213.House Robber II/README.md‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,46 @@ func max(a, b int) int {
153153
}
154154
```
155155

156+
### **TypeScript**
157+
158+
```ts
159+
function rob(nums: number[]): number {
160+
const n = nums.length;
161+
if (n === 1) {
162+
return nums[0];
163+
}
164+
const robRange = (left: number, right: number) => {
165+
const dp = [0, 0];
166+
for (let i = left; i < right; i++) {
167+
[dp[0], dp[1]] = [dp[1], Math.max(dp[1], dp[0] + nums[i])];
168+
}
169+
return dp[1];
170+
};
171+
return Math.max(robRange(0, n - 1), robRange(1, n));
172+
}
173+
```
174+
175+
### **Rust**
176+
177+
```rust
178+
impl Solution {
179+
pub fn rob(nums: Vec<i32>) -> i32 {
180+
let n = nums.len();
181+
if n == 1 {
182+
return nums[0];
183+
}
184+
let rob_range = |left, right| {
185+
let mut dp = [0, 0];
186+
for i in left..right {
187+
dp = [dp[1], dp[1].max(dp[0] + nums[i])];
188+
}
189+
dp[1]
190+
};
191+
rob_range(0, n - 1).max(rob_range(1, n))
192+
}
193+
}
194+
```
195+
156196
### **...**
157197

158198
```

‎solution/0200-0299/0213.House Robber II/README_EN.md‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,46 @@ func max(a, b int) int {
142142
}
143143
```
144144

145+
### **TypeScript**
146+
147+
```ts
148+
function rob(nums: number[]): number {
149+
const n = nums.length;
150+
if (n === 1) {
151+
return nums[0];
152+
}
153+
const robRange = (left: number, right: number) => {
154+
const dp = [0, 0];
155+
for (let i = left; i < right; i++) {
156+
[dp[0], dp[1]] = [dp[1], Math.max(dp[1], dp[0] + nums[i])];
157+
}
158+
return dp[1];
159+
};
160+
return Math.max(robRange(0, n - 1), robRange(1, n));
161+
}
162+
```
163+
164+
### **Rust**
165+
166+
```rust
167+
impl Solution {
168+
pub fn rob(nums: Vec<i32>) -> i32 {
169+
let n = nums.len();
170+
if n == 1 {
171+
return nums[0];
172+
}
173+
let rob_range = |left, right| {
174+
let mut dp = [0, 0];
175+
for i in left..right {
176+
dp = [dp[1], dp[1].max(dp[0] + nums[i])];
177+
}
178+
dp[1]
179+
};
180+
rob_range(0, n - 1).max(rob_range(1, n))
181+
}
182+
}
183+
```
184+
145185
### **...**
146186

147187
```
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
impl Solution {
2+
pub fn rob(nums: Vec<i32>) -> i32 {
3+
let n = nums.len();
4+
if n == 1 {
5+
return nums[0];
6+
}
7+
let rob_range = |left, right| {
8+
let mut dp = [0, 0];
9+
for i in left..right {
10+
dp = [dp[1], dp[1].max(dp[0] + nums[i])];
11+
}
12+
dp[1]
13+
};
14+
rob_range(0, n - 1).max(rob_range(1, n))
15+
}
16+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /