Skip to content

Commit b368a09

Browse files
committed
feat: update leetcode and lcof solutions: No.0070. Climbing Stairs
1 parent 40e90f3 commit b368a09

File tree

17 files changed

+276
-134
lines changed

17 files changed

+276
-134
lines changed

lcof/面试题10- I. 斐波那契数列/README.md

+28-17
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,23 @@ class Solution {
6464
}
6565
```
6666

67+
### **C++**
68+
69+
```cpp
70+
class Solution {
71+
public:
72+
int fib(int n) {
73+
int a = 0, b = 1;
74+
for (int i = 0; i < n; ++i) {
75+
int c = (a + b) % 1000000007;
76+
a = b;
77+
b = c;
78+
}
79+
return a;
80+
}
81+
};
82+
```
83+
6784
### **JavaScript**
6885
6986
```js
@@ -72,32 +89,26 @@ class Solution {
7289
* @return {number}
7390
*/
7491
var fib = function (n) {
75-
if (!n) return 0;
76-
let pre = 0;
77-
let cur = 1;
78-
for (let i = 2; i <= n; i++) {
79-
let c = (pre + cur) % (1e9 + 7);
80-
pre = cur;
81-
cur = c;
92+
let a = 0,
93+
b = 1;
94+
for (let i = 0; i < n; ++i) {
95+
const c = (a + b) % (1e9 + 7);
96+
a = b;
97+
b = c;
8298
}
83-
return cur;
99+
return a;
84100
};
85101
```
86102

87103
### **Go**
88104

89105
```go
90106
func fib(n int) int {
91-
if n < 2 {
92-
return n
93-
}
94-
a := make([]int,n+1)
95-
a[0]=0
96-
a[1]=1
97-
for i := 2; i < n+1; i++ {
98-
a[i] = (a[i-1]+ a[i-2])%1000000007
107+
a, b := 0, 1
108+
for i := 0; i < n; i++ {
109+
a, b = b, (a + b) % 1000000007
99110
}
100-
return a[n]
111+
return a
101112
}
102113
```
103114

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public:
3+
int fib(int n) {
4+
int a = 0, b = 1;
5+
for (int i = 0; i < n; ++i) {
6+
int c = (a + b) % 1000000007;
7+
a = b;
8+
b = c;
9+
}
10+
return a;
11+
}
12+
};
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
func fib(n int) int {
2-
if n < 2 {
3-
return n
2+
a, b := 0, 1
3+
for i := 0; i < n; i++ {
4+
a, b = b, (a + b) % 1000000007
45
}
5-
a := make([]int,n+1)
6-
a[0]=0
7-
a[1]=1
8-
for i := 2; i < n+1; i++ {
9-
a[i] = (a[i-1]+ a[i-2])%1000000007
10-
}
11-
return a[n]
6+
return a
127
}

lcof/面试题10- I. 斐波那契数列/Solution.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
* @return {number}
44
*/
55
var fib = function (n) {
6-
if (!n) return 0;
7-
let pre = 0;
8-
let cur = 1;
9-
for (let i = 2; i <= n; i++) {
10-
let c = (pre + cur) % (1e9 + 7);
11-
pre = cur;
12-
cur = c;
6+
let a = 0,
7+
b = 1;
8+
for (let i = 0; i < n; ++i) {
9+
const c = (a + b) % (1e9 + 7);
10+
a = b;
11+
b = c;
1312
}
14-
return cur;
13+
return a;
1514
};

lcof/面试题10- II. 青蛙跳台阶问题/README.md

+31-23
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,32 @@ class Solution {
4848
public int numWays(int n) {
4949
int a = 0, b = 1;
5050
for (int i = 0; i < n; ++i) {
51-
int s = (a + b) % 1000000007;
51+
int c = (a + b) % 1000000007;
5252
a = b;
53-
b = s;
53+
b = c;
5454
}
5555
return b;
5656
}
5757
}
5858
```
5959

60+
### **C++**
61+
62+
```cpp
63+
class Solution {
64+
public:
65+
int numWays(int n) {
66+
int a = 0, b = 1;
67+
for (int i = 0; i < n; ++i) {
68+
int c = (a + b) % 1000000007;
69+
a = b;
70+
b = c;
71+
}
72+
return b;
73+
}
74+
};
75+
```
76+
6077
### **JavaScript**
6178
6279
```js
@@ -65,35 +82,26 @@ class Solution {
6582
* @return {number}
6683
*/
6784
var numWays = function (n) {
68-
if (!n) return 1;
69-
let pre = 1;
70-
let cur = 1;
71-
for (let i = 2; i <= n; i++) {
72-
let c = (pre + cur) % (1e9 + 7);
73-
pre = cur;
74-
cur = c;
85+
let a = 0,
86+
b = 1;
87+
for (let i = 0; i < n; ++i) {
88+
const c = (a + b) % (1e9 + 7);
89+
a = b;
90+
b = c;
7591
}
76-
return cur;
92+
return b;
7793
};
7894
```
7995

8096
### **Go**
8197

8298
```go
8399
func numWays(n int) int {
84-
if n == 0 {
85-
return 1
86-
}
87-
if n <= 2 {
88-
return n
89-
}
90-
a := make([]int, n)
91-
a[0] = 1
92-
a[1] = 2
93-
for i := 2; i < n; i++ {
94-
a[i] = (a[i-1] + a[i-2]) % 1000000007
95-
}
96-
return a[n-1]
100+
a, b := 0, 1
101+
for i := 0; i < n; i++ {
102+
a, b = b, (a + b) % 1000000007
103+
}
104+
return b
97105
}
98106
```
99107

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public:
3+
int numWays(int n) {
4+
int a = 0, b = 1;
5+
for (int i = 0; i < n; ++i) {
6+
int c = (a + b) % 1000000007;
7+
a = b;
8+
b = c;
9+
}
10+
return b;
11+
}
12+
};
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
func numWays(n int) int {
2-
if n == 0 {
3-
return 1
4-
}
5-
if n <= 2 {
6-
return n
7-
}
8-
a := make([]int, n)
9-
a[0] = 1
10-
a[1] = 2
11-
for i := 2; i < n; i++ {
12-
a[i] = (a[i-1] + a[i-2]) % 1000000007
13-
}
14-
return a[n-1]
2+
a, b := 0, 1
3+
for i := 0; i < n; i++ {
4+
a, b = b, (a + b) % 1000000007
5+
}
6+
return b
157
}

lcof/面试题10- II. 青蛙跳台阶问题/Solution.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ class Solution {
22
public int numWays(int n) {
33
int a = 0, b = 1;
44
for (int i = 0; i < n; ++i) {
5-
int s = (a + b) % 1000000007;
5+
int c = (a + b) % 1000000007;
66
a = b;
7-
b = s;
7+
b = c;
88
}
99
return b;
1010
}

lcof/面试题10- II. 青蛙跳台阶问题/Solution.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
* @return {number}
44
*/
55
var numWays = function (n) {
6-
if (!n) return 1;
7-
let pre = 1;
8-
let cur = 1;
9-
for (let i = 2; i <= n; i++) {
10-
let c = (pre + cur) % (1e9 + 7);
11-
pre = cur;
12-
cur = c;
6+
let a = 0,
7+
b = 1;
8+
for (let i = 0; i < n; ++i) {
9+
const c = (a + b) % (1e9 + 7);
10+
a = b;
11+
b = c;
1312
}
14-
return cur;
13+
return b;
1514
};

solution/0000-0099/0070.Climbing Stairs/README.md

+66-1
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,87 @@
3333

3434
<!-- 这里可写通用的实现逻辑 -->
3535

36+
想上第 `n` 级台阶,可从第 `n-1` 级台阶爬一级上去,也可从第 `n-2` 级台阶爬两级上去,即:`f(n) = f(n-1) + f(n-2)`。递推求解即可。
37+
3638
<!-- tabs:start -->
3739

3840
### **Python3**
3941

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

4244
```python
43-
45+
class Solution:
46+
def climbStairs(self, n: int) -> int:
47+
a, b = 0, 1
48+
for i in range(n):
49+
a, b = b, a + b
50+
return b
4451
```
4552

4653
### **Java**
4754

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

5057
```java
58+
class Solution {
59+
public int climbStairs(int n) {
60+
int a = 0, b = 1;
61+
for (int i = 0; i < n; ++i) {
62+
int c = a + b;
63+
a = b;
64+
b = c;
65+
}
66+
return b;
67+
}
68+
}
69+
```
70+
71+
### **C++**
72+
73+
```cpp
74+
class Solution {
75+
public:
76+
int climbStairs(int n) {
77+
int a = 0, b = 1;
78+
for (int i = 0; i < n; ++i) {
79+
int c = a + b;
80+
a = b;
81+
b = c;
82+
}
83+
return b;
84+
}
85+
};
86+
```
87+
88+
### **JavaScript**
89+
90+
```js
91+
/**
92+
* @param {number} n
93+
* @return {number}
94+
*/
95+
var climbStairs = function (n) {
96+
let a = 0,
97+
b = 1;
98+
for (let i = 0; i < n; ++i) {
99+
const c = a + b;
100+
a = b;
101+
b = c;
102+
}
103+
return b;
104+
};
105+
```
106+
107+
### **Go**
51108

109+
```go
110+
func climbStairs(n int) int {
111+
a, b := 0, 1
112+
for i := 0; i < n; i++ {
113+
a, b = b, a + b
114+
}
115+
return b
116+
}
52117
```
53118

54119
### **...**

0 commit comments

Comments
 (0)