Skip to content

Commit d639583

Browse files
committedOct 12, 2021
feat: add solutions to lc problem: No.0967
No.0967.Numbers With Same Consecutive Differences
1 parent 6d2d051 commit d639583

File tree

6 files changed

+283
-4
lines changed

6 files changed

+283
-4
lines changed
 

‎solution/0900-0999/0967.Numbers With Same Consecutive Differences/README.md

+98-2
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,123 @@
5151
<li><code>0 <= k <= 9</code></li>
5252
</ul>
5353

54-
5554
## 解法
5655

5756
<!-- 这里可写通用的实现逻辑 -->
5857

58+
DFS。
59+
5960
<!-- tabs:start -->
6061

6162
### **Python3**
6263

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

6566
```python
66-
67+
class Solution:
68+
def numsSameConsecDiff(self, n: int, k: int) -> List[int]:
69+
ans = []
70+
71+
def dfs(n, k, t):
72+
if n == 0:
73+
ans.append(t)
74+
return
75+
last = t % 10
76+
if last + k <= 9:
77+
dfs(n - 1, k, t * 10 + last + k)
78+
if last - k >= 0 and k != 0:
79+
dfs(n - 1, k, t * 10 + last - k)
80+
81+
for i in range(1, 10):
82+
dfs(n - 1, k, i)
83+
return ans
6784
```
6885

6986
### **Java**
7087

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

7390
```java
91+
class Solution {
92+
public int[] numsSameConsecDiff(int n, int k) {
93+
List<Integer> res = new ArrayList<>();
94+
for (int i = 1; i < 10; ++i) {
95+
dfs(n - 1, k, i, res);
96+
}
97+
int[] ans = new int[res.size()];
98+
for (int i = 0; i < res.size(); ++i) {
99+
ans[i] = res.get(i);
100+
}
101+
return ans;
102+
}
103+
104+
private void dfs(int n, int k, int t, List<Integer> res) {
105+
if (n == 0) {
106+
res.add(t);
107+
return;
108+
}
109+
int last = t % 10;
110+
if (last + k <= 9) {
111+
dfs(n - 1, k, t * 10 + last + k, res);
112+
}
113+
if (last - k >= 0 && k != 0) {
114+
dfs(n - 1, k, t * 10 + last - k, res);
115+
}
116+
}
117+
}
118+
```
119+
120+
### **C++**
121+
122+
```cpp
123+
class Solution {
124+
public:
125+
vector<int> ans;
126+
127+
vector<int> numsSameConsecDiff(int n, int k) {
128+
for (int i = 1; i < 10; ++i)
129+
dfs(n - 1, k, i);
130+
return ans;
131+
}
132+
133+
void dfs(int n, int k, int t) {
134+
if (n == 0)
135+
{
136+
ans.push_back(t);
137+
return;
138+
}
139+
int last = t % 10;
140+
if (last + k <= 9) dfs(n - 1, k, t * 10 + last + k);
141+
if (last - k >= 0 && k != 0) dfs(n - 1, k, t * 10 + last - k);
142+
}
143+
};
144+
```
74145
146+
### **Go**
147+
148+
```go
149+
func numsSameConsecDiff(n int, k int) []int {
150+
var ans []int
151+
var dfs func(n, k, t int)
152+
dfs = func(n, k, t int) {
153+
if n == 0 {
154+
ans = append(ans, t)
155+
return
156+
}
157+
last := t % 10
158+
if last+k <= 9 {
159+
dfs(n-1, k, t*10+last+k)
160+
}
161+
if last-k >= 0 && k != 0 {
162+
dfs(n-1, k, t*10+last-k)
163+
}
164+
}
165+
166+
for i := 1; i < 10; i++ {
167+
dfs(n-1, k, i)
168+
}
169+
return ans
170+
}
75171
```
76172

77173
### **...**

‎solution/0900-0999/0967.Numbers With Same Consecutive Differences/README_EN.md

+98-2
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,117 @@
4848
<li><code>0 &lt;= k &lt;= 9</code></li>
4949
</ul>
5050

51-
5251
## Solutions
5352

53+
DFS.
54+
5455
<!-- tabs:start -->
5556

5657
### **Python3**
5758

5859
```python
59-
60+
class Solution:
61+
def numsSameConsecDiff(self, n: int, k: int) -> List[int]:
62+
ans = []
63+
64+
def dfs(n, k, t):
65+
if n == 0:
66+
ans.append(t)
67+
return
68+
last = t % 10
69+
if last + k <= 9:
70+
dfs(n - 1, k, t * 10 + last + k)
71+
if last - k >= 0 and k != 0:
72+
dfs(n - 1, k, t * 10 + last - k)
73+
74+
for i in range(1, 10):
75+
dfs(n - 1, k, i)
76+
return ans
6077
```
6178

6279
### **Java**
6380

6481
```java
82+
class Solution {
83+
public int[] numsSameConsecDiff(int n, int k) {
84+
List<Integer> res = new ArrayList<>();
85+
for (int i = 1; i < 10; ++i) {
86+
dfs(n - 1, k, i, res);
87+
}
88+
int[] ans = new int[res.size()];
89+
for (int i = 0; i < res.size(); ++i) {
90+
ans[i] = res.get(i);
91+
}
92+
return ans;
93+
}
94+
95+
private void dfs(int n, int k, int t, List<Integer> res) {
96+
if (n == 0) {
97+
res.add(t);
98+
return;
99+
}
100+
int last = t % 10;
101+
if (last + k <= 9) {
102+
dfs(n - 1, k, t * 10 + last + k, res);
103+
}
104+
if (last - k >= 0 && k != 0) {
105+
dfs(n - 1, k, t * 10 + last - k, res);
106+
}
107+
}
108+
}
109+
```
110+
111+
### **C++**
112+
113+
```cpp
114+
class Solution {
115+
public:
116+
vector<int> ans;
117+
118+
vector<int> numsSameConsecDiff(int n, int k) {
119+
for (int i = 1; i < 10; ++i)
120+
dfs(n - 1, k, i);
121+
return ans;
122+
}
123+
124+
void dfs(int n, int k, int t) {
125+
if (n == 0)
126+
{
127+
ans.push_back(t);
128+
return;
129+
}
130+
int last = t % 10;
131+
if (last + k <= 9) dfs(n - 1, k, t * 10 + last + k);
132+
if (last - k >= 0 && k != 0) dfs(n - 1, k, t * 10 + last - k);
133+
}
134+
};
135+
```
65136
137+
### **Go**
138+
139+
```go
140+
func numsSameConsecDiff(n int, k int) []int {
141+
var ans []int
142+
var dfs func(n, k, t int)
143+
dfs = func(n, k, t int) {
144+
if n == 0 {
145+
ans = append(ans, t)
146+
return
147+
}
148+
last := t % 10
149+
if last+k <= 9 {
150+
dfs(n-1, k, t*10+last+k)
151+
}
152+
if last-k >= 0 && k != 0 {
153+
dfs(n-1, k, t*10+last-k)
154+
}
155+
}
156+
157+
for i := 1; i < 10; i++ {
158+
dfs(n-1, k, i)
159+
}
160+
return ans
161+
}
66162
```
67163

68164
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
vector<int> ans;
4+
5+
vector<int> numsSameConsecDiff(int n, int k) {
6+
for (int i = 1; i < 10; ++i)
7+
dfs(n - 1, k, i);
8+
return ans;
9+
}
10+
11+
void dfs(int n, int k, int t) {
12+
if (n == 0)
13+
{
14+
ans.push_back(t);
15+
return;
16+
}
17+
int last = t % 10;
18+
if (last + k <= 9) dfs(n - 1, k, t * 10 + last + k);
19+
if (last - k >= 0 && k != 0) dfs(n - 1, k, t * 10 + last - k);
20+
}
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
func numsSameConsecDiff(n int, k int) []int {
2+
var ans []int
3+
var dfs func(n, k, t int)
4+
dfs = func(n, k, t int) {
5+
if n == 0 {
6+
ans = append(ans, t)
7+
return
8+
}
9+
last := t % 10
10+
if last+k <= 9 {
11+
dfs(n-1, k, t*10+last+k)
12+
}
13+
if last-k >= 0 && k != 0 {
14+
dfs(n-1, k, t*10+last-k)
15+
}
16+
}
17+
18+
for i := 1; i < 10; i++ {
19+
dfs(n-1, k, i)
20+
}
21+
return ans
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public int[] numsSameConsecDiff(int n, int k) {
3+
List<Integer> res = new ArrayList<>();
4+
for (int i = 1; i < 10; ++i) {
5+
dfs(n - 1, k, i, res);
6+
}
7+
int[] ans = new int[res.size()];
8+
for (int i = 0; i < res.size(); ++i) {
9+
ans[i] = res.get(i);
10+
}
11+
return ans;
12+
}
13+
14+
private void dfs(int n, int k, int t, List<Integer> res) {
15+
if (n == 0) {
16+
res.add(t);
17+
return;
18+
}
19+
int last = t % 10;
20+
if (last + k <= 9) {
21+
dfs(n - 1, k, t * 10 + last + k, res);
22+
}
23+
if (last - k >= 0 && k != 0) {
24+
dfs(n - 1, k, t * 10 + last - k, res);
25+
}
26+
}
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
def numsSameConsecDiff(self, n: int, k: int) -> List[int]:
3+
ans = []
4+
5+
def dfs(n, k, t):
6+
if n == 0:
7+
ans.append(t)
8+
return
9+
last = t % 10
10+
if last + k <= 9:
11+
dfs(n - 1, k, t * 10 + last + k)
12+
if last - k >= 0 and k != 0:
13+
dfs(n - 1, k, t * 10 + last - k)
14+
15+
for i in range(1, 10):
16+
dfs(n - 1, k, i)
17+
return ans

0 commit comments

Comments
 (0)
Please sign in to comment.