Skip to content

Commit d37b072

Browse files
committed
feat: add solutions to lc problem: No.1317
No.1317.Convert Integer to the Sum of Two No-Zero Integers
1 parent ffd2949 commit d37b072

File tree

5 files changed

+177
-22
lines changed

5 files changed

+177
-22
lines changed

solution/1300-1399/1317.Convert Integer to the Sum of Two No-Zero Integers/README.md

+86-8
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
从 $1$ 开始枚举 $a$,判断 $a$ 和 $n - a$ 是否满足条件,如果满足则返回。
7070

71-
时间复杂度 $O(n\times \log n)$。
71+
时间复杂度 $O(n\times \log n)$,空间复杂度 $O(1)$。其中 $n$ 为题目给定的整数
7272

7373
<!-- tabs:start -->
7474

@@ -85,20 +85,57 @@ class Solution:
8585
return [a, b]
8686
```
8787

88+
```python
89+
class Solution:
90+
def getNoZeroIntegers(self, n: int) -> List[int]:
91+
def f(x):
92+
while x:
93+
if x % 10 == 0:
94+
return False
95+
x //= 10
96+
return True
97+
98+
for a in range(1, n):
99+
b = n - a
100+
if f(a) and f(b):
101+
return [a, b]
102+
```
103+
88104
### **Java**
89105

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

92108
```java
93109
class Solution {
94110
public int[] getNoZeroIntegers(int n) {
95-
for (int a = 1; a < n; ++a) {
111+
for (int a = 1; ; ++a) {
96112
int b = n - a;
97113
if (!(a + "" + b).contains("0")) {
98114
return new int[] {a, b};
99115
}
100116
}
101-
return null;
117+
}
118+
}
119+
```
120+
121+
```java
122+
class Solution {
123+
public int[] getNoZeroIntegers(int n) {
124+
for (int a = 1; ; ++a) {
125+
int b = n - a;
126+
if (f(a) && f(b)) {
127+
return new int[] {a, b};
128+
}
129+
}
130+
}
131+
132+
private boolean f(int x) {
133+
for (; x > 0; x /= 10) {
134+
if (x % 10 == 0) {
135+
return false;
136+
}
137+
}
138+
return true;
102139
}
103140
}
104141
```
@@ -109,11 +146,34 @@ class Solution {
109146
class Solution {
110147
public:
111148
vector<int> getNoZeroIntegers(int n) {
112-
for (int a = 1; a < n; ++a) {
149+
for (int a = 1; ; ++a) {
113150
int b = n - a;
114-
if ((to_string(a) + to_string(b)).find('0') == string::npos) return {a, b};
151+
if ((to_string(a) + to_string(b)).find('0') == -1) {
152+
return {a, b};
153+
}
154+
}
155+
}
156+
};
157+
```
158+
159+
```cpp
160+
class Solution {
161+
public:
162+
vector<int> getNoZeroIntegers(int n) {
163+
auto f = [](int x) {
164+
for (; x; x /= 10) {
165+
if (x % 10 == 0) {
166+
return false;
167+
}
168+
}
169+
return true;
170+
};
171+
for (int a = 1; ; ++a) {
172+
int b = n - a;
173+
if (f(a) && f(b)) {
174+
return {a, b};
175+
}
115176
}
116-
return {};
117177
}
118178
};
119179
```
@@ -122,13 +182,31 @@ public:
122182

123183
```go
124184
func getNoZeroIntegers(n int) []int {
125-
for a := 1; a < n; a++ {
185+
for a := 1; ; a++ {
126186
b := n - a
127187
if !strings.Contains(strconv.Itoa(a)+strconv.Itoa(b), "0") {
128188
return []int{a, b}
129189
}
130190
}
131-
return nil
191+
}
192+
```
193+
194+
```go
195+
func getNoZeroIntegers(n int) []int {
196+
f := func(x int) bool {
197+
for ; x > 0; x /= 10 {
198+
if x%10 == 0 {
199+
return false
200+
}
201+
}
202+
return true
203+
}
204+
for a := 1; ; a++ {
205+
b := n - a
206+
if f(a) && f(b) {
207+
return []int{a, b}
208+
}
209+
}
132210
}
133211
```
134212

solution/1300-1399/1317.Convert Integer to the Sum of Two No-Zero Integers/README_EN.md

+85-7
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,55 @@ class Solution:
5757
return [a, b]
5858
```
5959

60+
```python
61+
class Solution:
62+
def getNoZeroIntegers(self, n: int) -> List[int]:
63+
def f(x):
64+
while x:
65+
if x % 10 == 0:
66+
return False
67+
x //= 10
68+
return True
69+
70+
for a in range(1, n):
71+
b = n - a
72+
if f(a) and f(b):
73+
return [a, b]
74+
```
75+
6076
### **Java**
6177

6278
```java
6379
class Solution {
6480
public int[] getNoZeroIntegers(int n) {
65-
for (int a = 1; a < n; ++a) {
81+
for (int a = 1; ; ++a) {
6682
int b = n - a;
6783
if (!(a + "" + b).contains("0")) {
6884
return new int[] {a, b};
6985
}
7086
}
71-
return null;
87+
}
88+
}
89+
```
90+
91+
```java
92+
class Solution {
93+
public int[] getNoZeroIntegers(int n) {
94+
for (int a = 1; ; ++a) {
95+
int b = n - a;
96+
if (f(a) && f(b)) {
97+
return new int[] {a, b};
98+
}
99+
}
100+
}
101+
102+
private boolean f(int x) {
103+
for (; x > 0; x /= 10) {
104+
if (x % 10 == 0) {
105+
return false;
106+
}
107+
}
108+
return true;
72109
}
73110
}
74111
```
@@ -79,11 +116,34 @@ class Solution {
79116
class Solution {
80117
public:
81118
vector<int> getNoZeroIntegers(int n) {
82-
for (int a = 1; a < n; ++a) {
119+
for (int a = 1; ; ++a) {
83120
int b = n - a;
84-
if ((to_string(a) + to_string(b)).find('0') == string::npos) return {a, b};
121+
if ((to_string(a) + to_string(b)).find('0') == -1) {
122+
return {a, b};
123+
}
124+
}
125+
}
126+
};
127+
```
128+
129+
```cpp
130+
class Solution {
131+
public:
132+
vector<int> getNoZeroIntegers(int n) {
133+
auto f = [](int x) {
134+
for (; x; x /= 10) {
135+
if (x % 10 == 0) {
136+
return false;
137+
}
138+
}
139+
return true;
140+
};
141+
for (int a = 1; ; ++a) {
142+
int b = n - a;
143+
if (f(a) && f(b)) {
144+
return {a, b};
145+
}
85146
}
86-
return {};
87147
}
88148
};
89149
```
@@ -92,13 +152,31 @@ public:
92152

93153
```go
94154
func getNoZeroIntegers(n int) []int {
95-
for a := 1; a < n; a++ {
155+
for a := 1; ; a++ {
96156
b := n - a
97157
if !strings.Contains(strconv.Itoa(a)+strconv.Itoa(b), "0") {
98158
return []int{a, b}
99159
}
100160
}
101-
return nil
161+
}
162+
```
163+
164+
```go
165+
func getNoZeroIntegers(n int) []int {
166+
f := func(x int) bool {
167+
for ; x > 0; x /= 10 {
168+
if x%10 == 0 {
169+
return false
170+
}
171+
}
172+
return true
173+
}
174+
for a := 1; ; a++ {
175+
b := n - a
176+
if f(a) && f(b) {
177+
return []int{a, b}
178+
}
179+
}
102180
}
103181
```
104182

Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
class Solution {
22
public:
33
vector<int> getNoZeroIntegers(int n) {
4-
for (int a = 1; a < n; ++a) {
4+
for (int a = 1; ; ++a) {
55
int b = n - a;
6-
if ((to_string(a) + to_string(b)).find('0') == string::npos) return {a, b};
6+
if ((to_string(a) + to_string(b)).find('0') == -1) {
7+
return {a, b};
8+
}
79
}
8-
return {};
910
}
1011
};
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
func getNoZeroIntegers(n int) []int {
2-
for a := 1; a < n; a++ {
2+
for a := 1; ; a++ {
33
b := n - a
44
if !strings.Contains(strconv.Itoa(a)+strconv.Itoa(b), "0") {
55
return []int{a, b}
66
}
77
}
8-
return nil
98
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
class Solution {
22
public int[] getNoZeroIntegers(int n) {
3-
for (int a = 1; a < n; ++a) {
3+
for (int a = 1; ; ++a) {
44
int b = n - a;
55
if (!(a + "" + b).contains("0")) {
66
return new int[] {a, b};
77
}
88
}
9-
return null;
109
}
1110
}

0 commit comments

Comments
 (0)