Skip to content

Commit 4d8038c

Browse files
authoredMar 17, 2025··
feat: add solutions to lc problems: No.3483,3484,3487 (#4254)
1 parent eb3d84b commit 4d8038c

File tree

21 files changed

+1100
-22
lines changed

21 files changed

+1100
-22
lines changed
 

‎solution/3400-3499/3483.Unique 3-Digit Even Numbers/README.md

+113-4
Original file line numberDiff line numberDiff line change
@@ -75,32 +75,141 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3400-3499/3483.Un
7575

7676
<!-- solution:start -->
7777

78-
### 方法一
78+
### 方法一:哈希表 + 枚举
79+
80+
我们用一个哈希表 $\textit{s}$ 记录所有不同的三位偶数,然后枚举所有可能的三位偶数,将其加入哈希表中。
81+
82+
最后返回哈希表的大小即可。
83+
84+
时间复杂度 $O(n^3)$,空间复杂度 $O(n^3)$。其中 $n$ 为数组 $\textit{digits}$ 的长度。
7985

8086
<!-- tabs:start -->
8187

8288
#### Python3
8389

8490
```python
85-
91+
class Solution:
92+
def totalNumbers(self, digits: List[int]) -> int:
93+
s = set()
94+
for i, a in enumerate(digits):
95+
if a & 1:
96+
continue
97+
for j, b in enumerate(digits):
98+
if i == j:
99+
continue
100+
for k, c in enumerate(digits):
101+
if c == 0 or k in (i, j):
102+
continue
103+
s.add(c * 100 + b * 10 + a)
104+
return len(s)
86105
```
87106

88107
#### Java
89108

90109
```java
91-
110+
class Solution {
111+
public int totalNumbers(int[] digits) {
112+
Set<Integer> s = new HashSet<>();
113+
int n = digits.length;
114+
for (int i = 0; i < n; ++i) {
115+
if (digits[i] % 2 == 1) {
116+
continue;
117+
}
118+
for (int j = 0; j < n; ++j) {
119+
if (i == j) {
120+
continue;
121+
}
122+
for (int k = 0; k < n; ++k) {
123+
if (digits[k] == 0 || k == i || k == j) {
124+
continue;
125+
}
126+
s.add(digits[k] * 100 + digits[j] * 10 + digits[i]);
127+
}
128+
}
129+
}
130+
return s.size();
131+
}
132+
}
92133
```
93134

94135
#### C++
95136

96137
```cpp
97-
138+
class Solution {
139+
public:
140+
int totalNumbers(vector<int>& digits) {
141+
unordered_set<int> s;
142+
int n = digits.size();
143+
for (int i = 0; i < n; ++i) {
144+
if (digits[i] % 2 == 1) {
145+
continue;
146+
}
147+
for (int j = 0; j < n; ++j) {
148+
if (i == j) {
149+
continue;
150+
}
151+
for (int k = 0; k < n; ++k) {
152+
if (digits[k] == 0 || k == i || k == j) {
153+
continue;
154+
}
155+
s.insert(digits[k] * 100 + digits[j] * 10 + digits[i]);
156+
}
157+
}
158+
}
159+
return s.size();
160+
}
161+
};
98162
```
99163
100164
#### Go
101165
102166
```go
167+
func totalNumbers(digits []int) int {
168+
s := make(map[int]struct{})
169+
for i, a := range digits {
170+
if a%2 == 1 {
171+
continue
172+
}
173+
for j, b := range digits {
174+
if i == j {
175+
continue
176+
}
177+
for k, c := range digits {
178+
if c == 0 || k == i || k == j {
179+
continue
180+
}
181+
s[c*100+b*10+a] = struct{}{}
182+
}
183+
}
184+
}
185+
return len(s)
186+
}
187+
```
103188

189+
#### TypeScript
190+
191+
```ts
192+
function totalNumbers(digits: number[]): number {
193+
const s = new Set<number>();
194+
const n = digits.length;
195+
for (let i = 0; i < n; ++i) {
196+
if (digits[i] % 2 === 1) {
197+
continue;
198+
}
199+
for (let j = 0; j < n; ++j) {
200+
if (i === j) {
201+
continue;
202+
}
203+
for (let k = 0; k < n; ++k) {
204+
if (digits[k] === 0 || k === i || k === j) {
205+
continue;
206+
}
207+
s.add(digits[k] * 100 + digits[j] * 10 + digits[i]);
208+
}
209+
}
210+
}
211+
return s.size;
212+
}
104213
```
105214

106215
<!-- tabs:end -->

‎solution/3400-3499/3483.Unique 3-Digit Even Numbers/README_EN.md

+113-4
Original file line numberDiff line numberDiff line change
@@ -73,32 +73,141 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3400-3499/3483.Un
7373

7474
<!-- solution:start -->
7575

76-
### Solution 1
76+
### Solution 1: Hash Set + Enumeration
77+
78+
We use a hash set $\textit{s}$ to record all distinct three-digit even numbers, and then enumerate all possible three-digit even numbers to add them to the hash set.
79+
80+
Finally, we return the size of the hash set.
81+
82+
The time complexity is $O(n^3)$, and the space complexity is $O(n^3)$. Where $n$ is the length of the array $\textit{digits}$.
7783

7884
<!-- tabs:start -->
7985

8086
#### Python3
8187

8288
```python
83-
89+
class Solution:
90+
def totalNumbers(self, digits: List[int]) -> int:
91+
s = set()
92+
for i, a in enumerate(digits):
93+
if a & 1:
94+
continue
95+
for j, b in enumerate(digits):
96+
if i == j:
97+
continue
98+
for k, c in enumerate(digits):
99+
if c == 0 or k in (i, j):
100+
continue
101+
s.add(c * 100 + b * 10 + a)
102+
return len(s)
84103
```
85104

86105
#### Java
87106

88107
```java
89-
108+
class Solution {
109+
public int totalNumbers(int[] digits) {
110+
Set<Integer> s = new HashSet<>();
111+
int n = digits.length;
112+
for (int i = 0; i < n; ++i) {
113+
if (digits[i] % 2 == 1) {
114+
continue;
115+
}
116+
for (int j = 0; j < n; ++j) {
117+
if (i == j) {
118+
continue;
119+
}
120+
for (int k = 0; k < n; ++k) {
121+
if (digits[k] == 0 || k == i || k == j) {
122+
continue;
123+
}
124+
s.add(digits[k] * 100 + digits[j] * 10 + digits[i]);
125+
}
126+
}
127+
}
128+
return s.size();
129+
}
130+
}
90131
```
91132

92133
#### C++
93134

94135
```cpp
95-
136+
class Solution {
137+
public:
138+
int totalNumbers(vector<int>& digits) {
139+
unordered_set<int> s;
140+
int n = digits.size();
141+
for (int i = 0; i < n; ++i) {
142+
if (digits[i] % 2 == 1) {
143+
continue;
144+
}
145+
for (int j = 0; j < n; ++j) {
146+
if (i == j) {
147+
continue;
148+
}
149+
for (int k = 0; k < n; ++k) {
150+
if (digits[k] == 0 || k == i || k == j) {
151+
continue;
152+
}
153+
s.insert(digits[k] * 100 + digits[j] * 10 + digits[i]);
154+
}
155+
}
156+
}
157+
return s.size();
158+
}
159+
};
96160
```
97161
98162
#### Go
99163
100164
```go
165+
func totalNumbers(digits []int) int {
166+
s := make(map[int]struct{})
167+
for i, a := range digits {
168+
if a%2 == 1 {
169+
continue
170+
}
171+
for j, b := range digits {
172+
if i == j {
173+
continue
174+
}
175+
for k, c := range digits {
176+
if c == 0 || k == i || k == j {
177+
continue
178+
}
179+
s[c*100+b*10+a] = struct{}{}
180+
}
181+
}
182+
}
183+
return len(s)
184+
}
185+
```
101186

187+
#### TypeScript
188+
189+
```ts
190+
function totalNumbers(digits: number[]): number {
191+
const s = new Set<number>();
192+
const n = digits.length;
193+
for (let i = 0; i < n; ++i) {
194+
if (digits[i] % 2 === 1) {
195+
continue;
196+
}
197+
for (let j = 0; j < n; ++j) {
198+
if (i === j) {
199+
continue;
200+
}
201+
for (let k = 0; k < n; ++k) {
202+
if (digits[k] === 0 || k === i || k === j) {
203+
continue;
204+
}
205+
s.add(digits[k] * 100 + digits[j] * 10 + digits[i]);
206+
}
207+
}
208+
}
209+
return s.size;
210+
}
102211
```
103212

104213
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public:
3+
int totalNumbers(vector<int>& digits) {
4+
unordered_set<int> s;
5+
int n = digits.size();
6+
for (int i = 0; i < n; ++i) {
7+
if (digits[i] % 2 == 1) {
8+
continue;
9+
}
10+
for (int j = 0; j < n; ++j) {
11+
if (i == j) {
12+
continue;
13+
}
14+
for (int k = 0; k < n; ++k) {
15+
if (digits[k] == 0 || k == i || k == j) {
16+
continue;
17+
}
18+
s.insert(digits[k] * 100 + digits[j] * 10 + digits[i]);
19+
}
20+
}
21+
}
22+
return s.size();
23+
}
24+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
func totalNumbers(digits []int) int {
2+
s := make(map[int]struct{})
3+
for i, a := range digits {
4+
if a%2 == 1 {
5+
continue
6+
}
7+
for j, b := range digits {
8+
if i == j {
9+
continue
10+
}
11+
for k, c := range digits {
12+
if c == 0 || k == i || k == j {
13+
continue
14+
}
15+
s[c*100+b*10+a] = struct{}{}
16+
}
17+
}
18+
}
19+
return len(s)
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public int totalNumbers(int[] digits) {
3+
Set<Integer> s = new HashSet<>();
4+
int n = digits.length;
5+
for (int i = 0; i < n; ++i) {
6+
if (digits[i] % 2 == 1) {
7+
continue;
8+
}
9+
for (int j = 0; j < n; ++j) {
10+
if (i == j) {
11+
continue;
12+
}
13+
for (int k = 0; k < n; ++k) {
14+
if (digits[k] == 0 || k == i || k == j) {
15+
continue;
16+
}
17+
s.add(digits[k] * 100 + digits[j] * 10 + digits[i]);
18+
}
19+
}
20+
}
21+
return s.size();
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def totalNumbers(self, digits: List[int]) -> int:
3+
s = set()
4+
for i, a in enumerate(digits):
5+
if a & 1:
6+
continue
7+
for j, b in enumerate(digits):
8+
if i == j:
9+
continue
10+
for k, c in enumerate(digits):
11+
if c == 0 or k in (i, j):
12+
continue
13+
s.add(c * 100 + b * 10 + a)
14+
return len(s)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
function totalNumbers(digits: number[]): number {
2+
const s = new Set<number>();
3+
const n = digits.length;
4+
for (let i = 0; i < n; ++i) {
5+
if (digits[i] % 2 === 1) {
6+
continue;
7+
}
8+
for (let j = 0; j < n; ++j) {
9+
if (i === j) {
10+
continue;
11+
}
12+
for (let k = 0; k < n; ++k) {
13+
if (digits[k] === 0 || k === i || k === j) {
14+
continue;
15+
}
16+
s.add(digits[k] * 100 + digits[j] * 10 + digits[i]);
17+
}
18+
}
19+
}
20+
return s.size;
21+
}

0 commit comments

Comments
 (0)
Please sign in to comment.