Skip to content

Commit 6cd0cf3

Browse files
committed
feat: add solutions to lc problem: No.1215
No.1215.Stepping Numbers
1 parent 0ce6938 commit 6cd0cf3

File tree

6 files changed

+296
-2
lines changed

6 files changed

+296
-2
lines changed

solution/1200-1299/1215.Stepping Numbers/README.md

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,124 @@
3232

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

35+
**方法一:BFS**
36+
3537
<!-- tabs:start -->
3638

3739
### **Python3**
3840

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

4143
```python
42-
44+
class Solution:
45+
def countSteppingNumbers(self, low: int, high: int) -> List[int]:
46+
ans = []
47+
if low == 0:
48+
ans.append(0)
49+
q = deque(range(1, 10))
50+
while q:
51+
v = q.popleft()
52+
if v > high:
53+
break
54+
if v >= low:
55+
ans.append(v)
56+
x = v % 10
57+
if x:
58+
q.append(v * 10 + x - 1)
59+
if x < 9:
60+
q.append(v * 10 + x + 1)
61+
return ans
4362
```
4463

4564
### **Java**
4665

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

4968
```java
69+
class Solution {
70+
public List<Integer> countSteppingNumbers(int low, int high) {
71+
List<Integer> ans = new ArrayList<>();
72+
if (low == 0) {
73+
ans.add(0);
74+
}
75+
Deque<Long> q = new ArrayDeque<>();
76+
for (long i = 1; i < 10; ++i) {
77+
q.offer(i);
78+
}
79+
while (!q.isEmpty()) {
80+
long v = q.pollFirst();
81+
if (v > high) {
82+
break;
83+
}
84+
if (v >= low) {
85+
ans.add((int) v);
86+
}
87+
int x = (int) v % 10;
88+
if (x > 0) {
89+
q.offer(v * 10 + x - 1);
90+
}
91+
if (x < 9) {
92+
q.offer(v * 10 + x + 1);
93+
}
94+
}
95+
return ans;
96+
}
97+
}
98+
```
99+
100+
### **C++**
101+
102+
```cpp
103+
class Solution {
104+
public:
105+
vector<int> countSteppingNumbers(int low, int high) {
106+
vector<int> ans;
107+
if (low == 0) ans.push_back(0);
108+
queue<long long> q;
109+
for (int i = 1; i < 10; ++i) q.push(i);
110+
while (!q.empty())
111+
{
112+
int v = q.front();
113+
q.pop();
114+
if (v > high) break;
115+
if (v >= low) ans.push_back(v);
116+
int x = v % 10;
117+
if (x) q.push(1ll * v * 10 + x - 1);
118+
if (x < 9) q.push(1ll * v * 10 + x + 1);
119+
}
120+
return ans;
121+
}
122+
};
123+
```
50124
125+
### **Go**
126+
127+
```go
128+
func countSteppingNumbers(low int, high int) []int {
129+
ans := []int{}
130+
if low == 0 {
131+
ans = append(ans, 0)
132+
}
133+
q := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
134+
for len(q) > 0 {
135+
v := q[0]
136+
q = q[1:]
137+
if v > high {
138+
break
139+
}
140+
if v >= low {
141+
ans = append(ans, v)
142+
}
143+
x := v % 10
144+
if x > 0 {
145+
q = append(q, v*10+x-1)
146+
}
147+
if x < 9 {
148+
q = append(q, v*10+x+1)
149+
}
150+
}
151+
return ans
152+
}
51153
```
52154

53155
### **...**

solution/1200-1299/1215.Stepping Numbers/README_EN.md

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,113 @@
4141
### **Python3**
4242

4343
```python
44-
44+
class Solution:
45+
def countSteppingNumbers(self, low: int, high: int) -> List[int]:
46+
ans = []
47+
if low == 0:
48+
ans.append(0)
49+
q = deque(range(1, 10))
50+
while q:
51+
v = q.popleft()
52+
if v > high:
53+
break
54+
if v >= low:
55+
ans.append(v)
56+
x = v % 10
57+
if x:
58+
q.append(v * 10 + x - 1)
59+
if x < 9:
60+
q.append(v * 10 + x + 1)
61+
return ans
4562
```
4663

4764
### **Java**
4865

4966
```java
67+
class Solution {
68+
public List<Integer> countSteppingNumbers(int low, int high) {
69+
List<Integer> ans = new ArrayList<>();
70+
if (low == 0) {
71+
ans.add(0);
72+
}
73+
Deque<Long> q = new ArrayDeque<>();
74+
for (long i = 1; i < 10; ++i) {
75+
q.offer(i);
76+
}
77+
while (!q.isEmpty()) {
78+
long v = q.pollFirst();
79+
if (v > high) {
80+
break;
81+
}
82+
if (v >= low) {
83+
ans.add((int) v);
84+
}
85+
int x = (int) v % 10;
86+
if (x > 0) {
87+
q.offer(v * 10 + x - 1);
88+
}
89+
if (x < 9) {
90+
q.offer(v * 10 + x + 1);
91+
}
92+
}
93+
return ans;
94+
}
95+
}
96+
```
97+
98+
### **C++**
99+
100+
```cpp
101+
class Solution {
102+
public:
103+
vector<int> countSteppingNumbers(int low, int high) {
104+
vector<int> ans;
105+
if (low == 0) ans.push_back(0);
106+
queue<long long> q;
107+
for (int i = 1; i < 10; ++i) q.push(i);
108+
while (!q.empty())
109+
{
110+
int v = q.front();
111+
q.pop();
112+
if (v > high) break;
113+
if (v >= low) ans.push_back(v);
114+
int x = v % 10;
115+
if (x) q.push(1ll * v * 10 + x - 1);
116+
if (x < 9) q.push(1ll * v * 10 + x + 1);
117+
}
118+
return ans;
119+
}
120+
};
121+
```
50122
123+
### **Go**
124+
125+
```go
126+
func countSteppingNumbers(low int, high int) []int {
127+
ans := []int{}
128+
if low == 0 {
129+
ans = append(ans, 0)
130+
}
131+
q := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
132+
for len(q) > 0 {
133+
v := q[0]
134+
q = q[1:]
135+
if v > high {
136+
break
137+
}
138+
if v >= low {
139+
ans = append(ans, v)
140+
}
141+
x := v % 10
142+
if x > 0 {
143+
q = append(q, v*10+x-1)
144+
}
145+
if x < 9 {
146+
q = append(q, v*10+x+1)
147+
}
148+
}
149+
return ans
150+
}
51151
```
52152

53153
### **...**
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
vector<int> countSteppingNumbers(int low, int high) {
4+
vector<int> ans;
5+
if (low == 0) ans.push_back(0);
6+
queue<long long> q;
7+
for (int i = 1; i < 10; ++i) q.push(i);
8+
while (!q.empty())
9+
{
10+
int v = q.front();
11+
q.pop();
12+
if (v > high) break;
13+
if (v >= low) ans.push_back(v);
14+
int x = v % 10;
15+
if (x) q.push(1ll * v * 10 + x - 1);
16+
if (x < 9) q.push(1ll * v * 10 + x + 1);
17+
}
18+
return ans;
19+
}
20+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
func countSteppingNumbers(low int, high int) []int {
2+
ans := []int{}
3+
if low == 0 {
4+
ans = append(ans, 0)
5+
}
6+
q := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
7+
for len(q) > 0 {
8+
v := q[0]
9+
q = q[1:]
10+
if v > high {
11+
break
12+
}
13+
if v >= low {
14+
ans = append(ans, v)
15+
}
16+
x := v % 10
17+
if x > 0 {
18+
q = append(q, v*10+x-1)
19+
}
20+
if x < 9 {
21+
q = append(q, v*10+x+1)
22+
}
23+
}
24+
return ans
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public List<Integer> countSteppingNumbers(int low, int high) {
3+
List<Integer> ans = new ArrayList<>();
4+
if (low == 0) {
5+
ans.add(0);
6+
}
7+
Deque<Long> q = new ArrayDeque<>();
8+
for (long i = 1; i < 10; ++i) {
9+
q.offer(i);
10+
}
11+
while (!q.isEmpty()) {
12+
long v = q.pollFirst();
13+
if (v > high) {
14+
break;
15+
}
16+
if (v >= low) {
17+
ans.add((int) v);
18+
}
19+
int x = (int) v % 10;
20+
if (x > 0) {
21+
q.offer(v * 10 + x - 1);
22+
}
23+
if (x < 9) {
24+
q.offer(v * 10 + x + 1);
25+
}
26+
}
27+
return ans;
28+
}
29+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def countSteppingNumbers(self, low: int, high: int) -> List[int]:
3+
ans = []
4+
if low == 0:
5+
ans.append(0)
6+
q = deque(range(1, 10))
7+
while q:
8+
v = q.popleft()
9+
if v > high:
10+
break
11+
if v >= low:
12+
ans.append(v)
13+
x = v % 10
14+
if x:
15+
q.append(v * 10 + x - 1)
16+
if x < 9:
17+
q.append(v * 10 + x + 1)
18+
return ans

0 commit comments

Comments
 (0)