Skip to content

Commit 9ff9d56

Browse files
committed
feat: add solutions to lc problem: No.0055. Jump Game
1 parent e816450 commit 9ff9d56

File tree

9 files changed

+209
-18
lines changed

9 files changed

+209
-18
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
- [打家劫舍](./solution/0100-0199/0198.House%20Robber/README.md)
166166
- [打家劫舍 II](./solution/0200-0299/0213.House%20Robber%20II/README.md)
167167
- [删除并获得点数](./solution/0700-0799/0740.Delete%20and%20Earn/README.md)
168+
- [跳跃游戏](./solution/0000-0099/0055.Jump%20Game/README.md)
168169
- [接雨水](./solution/0000-0099/0042.Trapping%20Rain%20Water/README.md)
169170
- [最大子序和](./solution/0000-0099/0053.Maximum%20Subarray/README.md)
170171
- [礼物的最大价值](./lcof/面试题47.%20礼物的最大价值/README.md)

README_EN.md

+1
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ Complete solutions to [LeetCode](https://leetcode.com/problemset/all/), [LCOF](h
159159
- [House Robber](./solution/0100-0199/0198.House%20Robber/README_EN.md)
160160
- [House Robber II](./solution/0200-0299/0213.House%20Robber%20II/README_EN.md)
161161
- [Delete and Earn](./solution/0700-0799/0740.Delete%20and%20Earn/README_EN.md)
162+
- [Jump Game](./solution/0000-0099/0055.Jump%20Game/README_EN.md)
162163
- [Trapping Rain Water](./solution/0000-0099/0042.Trapping%20Rain%20Water/README_EN.md)
163164
- [Maximum Subarray](./solution/0000-0099/0053.Maximum%20Subarray/README_EN.md)
164165
- [Minimum Path Sum](./solution/0000-0099/0064.Minimum%20Path%20Sum/README_EN.md)

solution/0000-0099/0055.Jump Game/README.md

+80-2
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,105 @@
3939
<li><code>0 <= nums[i] <= 10<sup>5</sup></code></li>
4040
</ul>
4141

42-
4342
## 解法
4443

4544
<!-- 这里可写通用的实现逻辑 -->
4645

46+
贪心。
47+
4748
<!-- tabs:start -->
4849

4950
### **Python3**
5051

5152
<!-- 这里可写当前语言的特殊实现逻辑 -->
5253

5354
```python
54-
55+
class Solution:
56+
def canJump(self, nums: List[int]) -> bool:
57+
mx = 0
58+
for i, num in enumerate(nums):
59+
if i > mx:
60+
return False
61+
mx = max(mx, i + num)
62+
return True
5563
```
5664

5765
### **Java**
5866

5967
<!-- 这里可写当前语言的特殊实现逻辑 -->
6068

6169
```java
70+
class Solution {
71+
public boolean canJump(int[] nums) {
72+
int mx = 0;
73+
for (int i = 0; i < nums.length; ++i) {
74+
if (i > mx) {
75+
return false;
76+
}
77+
mx = Math.max(mx, i + nums[i]);
78+
}
79+
return true;
80+
}
81+
}
82+
```
83+
84+
### **C++**
85+
86+
```cpp
87+
class Solution {
88+
public:
89+
bool canJump(vector<int>& nums) {
90+
int mx = 0;
91+
for (int i = 0; i < nums.size(); ++i) {
92+
if (i > mx) {
93+
return false;
94+
}
95+
mx = max(mx, i + nums[i]);
96+
}
97+
return true;
98+
}
99+
};
100+
```
101+
102+
### **Go**
103+
104+
```go
105+
func canJump(nums []int) bool {
106+
mx := 0
107+
for i, num := range nums {
108+
if i > mx {
109+
return false
110+
}
111+
mx = max(mx, i+num)
112+
}
113+
return true
114+
}
115+
116+
func max(a, b int) int {
117+
if a > b {
118+
return a
119+
}
120+
return b
121+
}
122+
```
62123

124+
### **C#**
125+
126+
```cs
127+
public class Solution {
128+
public bool CanJump(int[] nums) {
129+
int mx = 0;
130+
for (int i = 0; i < nums.Length; ++i)
131+
{
132+
if (i > mx)
133+
{
134+
return false;
135+
}
136+
mx = Math.Max(mx, i + nums[i]);
137+
}
138+
return true;
139+
}
140+
}
63141
```
64142

65143
### **...**

solution/0000-0099/0055.Jump Game/README_EN.md

+78-2
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,97 @@
3535
<li><code>0 &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
3636
</ul>
3737

38-
3938
## Solutions
4039

4140
<!-- tabs:start -->
4241

4342
### **Python3**
4443

4544
```python
46-
45+
class Solution:
46+
def canJump(self, nums: List[int]) -> bool:
47+
mx = 0
48+
for i, num in enumerate(nums):
49+
if i > mx:
50+
return False
51+
mx = max(mx, i + num)
52+
return True
4753
```
4854

4955
### **Java**
5056

5157
```java
58+
class Solution {
59+
public boolean canJump(int[] nums) {
60+
int mx = 0;
61+
for (int i = 0; i < nums.length; ++i) {
62+
if (i > mx) {
63+
return false;
64+
}
65+
mx = Math.max(mx, i + nums[i]);
66+
}
67+
return true;
68+
}
69+
}
70+
```
71+
72+
### **C++**
73+
74+
```cpp
75+
class Solution {
76+
public:
77+
bool canJump(vector<int>& nums) {
78+
int mx = 0;
79+
for (int i = 0; i < nums.size(); ++i) {
80+
if (i > mx) {
81+
return false;
82+
}
83+
mx = max(mx, i + nums[i]);
84+
}
85+
return true;
86+
}
87+
};
88+
```
89+
90+
### **Go**
91+
92+
```go
93+
func canJump(nums []int) bool {
94+
mx := 0
95+
for i, num := range nums {
96+
if i > mx {
97+
return false
98+
}
99+
mx = max(mx, i+num)
100+
}
101+
return true
102+
}
103+
104+
func max(a, b int) int {
105+
if a > b {
106+
return a
107+
}
108+
return b
109+
}
110+
```
52111

112+
### **C#**
113+
114+
```cs
115+
public class Solution {
116+
public bool CanJump(int[] nums) {
117+
int mx = 0;
118+
for (int i = 0; i < nums.Length; ++i)
119+
{
120+
if (i > mx)
121+
{
122+
return false;
123+
}
124+
mx = Math.Max(mx, i + nums[i]);
125+
}
126+
return true;
127+
}
128+
}
53129
```
54130

55131
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
bool canJump(vector<int>& nums) {
4+
int mx = 0;
5+
for (int i = 0; i < nums.size(); ++i) {
6+
if (i > mx) {
7+
return false;
8+
}
9+
mx = max(mx, i + nums[i]);
10+
}
11+
return true;
12+
}
13+
};

solution/0000-0099/0055.Jump Game/Solution.cs

+4-9
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
using System;
2-
31
public class Solution {
42
public bool CanJump(int[] nums) {
5-
var maxJump = 0;
6-
for (var i = 0; i < nums.Length; ++i)
3+
int mx = 0;
4+
for (int i = 0; i < nums.Length; ++i)
75
{
8-
if (i <= maxJump)
9-
{
10-
maxJump = Math.Max(maxJump, i + nums[i]);
11-
}
12-
else
6+
if (i > mx)
137
{
148
return false;
159
}
10+
mx = Math.Max(mx, i + nums[i]);
1611
}
1712
return true;
1813
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
func canJump(nums []int) bool {
2+
mx := 0
3+
for i, num := range nums {
4+
if i > mx {
5+
return false
6+
}
7+
mx = max(mx, i+num)
8+
}
9+
return true
10+
}
11+
12+
func max(a, b int) int {
13+
if a > b {
14+
return a
15+
}
16+
return b
17+
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
class Solution {
2-
32
public boolean canJump(int[] nums) {
4-
int count = 0;
5-
for (int i = nums.length - 2; i >= 0; i --) {
6-
count = nums[i] > count ? 0 : count + 1;
3+
int mx = 0;
4+
for (int i = 0; i < nums.length; ++i) {
5+
if (i > mx) {
6+
return false;
7+
}
8+
mx = Math.max(mx, i + nums[i]);
79
}
8-
return count == 0;
10+
return true;
911
}
1012
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def canJump(self, nums: List[int]) -> bool:
3+
mx = 0
4+
for i, num in enumerate(nums):
5+
if i > mx:
6+
return False
7+
mx = max(mx, i + num)
8+
return True

0 commit comments

Comments
 (0)