68
68
69
69
从 $1$ 开始枚举 $a$,判断 $a$ 和 $n - a$ 是否满足条件,如果满足则返回。
70
70
71
- 时间复杂度 $O(n\times \log n)$。
71
+ 时间复杂度 $O(n\times \log n)$,空间复杂度 $O(1)$。其中 $n$ 为题目给定的整数 。
72
72
73
73
<!-- tabs:start -->
74
74
@@ -85,20 +85,57 @@ class Solution:
85
85
return [a, b]
86
86
```
87
87
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
+
88
104
### ** Java**
89
105
90
106
<!-- 这里可写当前语言的特殊实现逻辑 -->
91
107
92
108
``` java
93
109
class Solution {
94
110
public int [] getNoZeroIntegers (int n ) {
95
- for (int a = 1 ; a < n ; ++ a) {
111
+ for (int a = 1 ; ; ++ a) {
96
112
int b = n - a;
97
113
if (! (a + " " + b). contains(" 0" )) {
98
114
return new int [] {a, b};
99
115
}
100
116
}
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 ;
102
139
}
103
140
}
104
141
```
@@ -109,11 +146,34 @@ class Solution {
109
146
class Solution {
110
147
public:
111
148
vector<int > getNoZeroIntegers(int n) {
112
- for (int a = 1; a < n ; ++a) {
149
+ for (int a = 1; ; ++a) {
113
150
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
+ }
115
176
}
116
- return {};
117
177
}
118
178
};
119
179
```
@@ -122,13 +182,31 @@ public:
122
182
123
183
``` go
124
184
func getNoZeroIntegers (n int ) []int {
125
- for a := 1; a < n ; a++ {
185
+ for a := 1 ; ; a++ {
126
186
b := n - a
127
187
if !strings.Contains (strconv.Itoa (a)+strconv.Itoa (b), " 0" ) {
128
188
return []int {a, b}
129
189
}
130
190
}
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
+ }
132
210
}
133
211
```
134
212
0 commit comments