Skip to content

Commit 6fed943

Browse files
authored
feat: add solutions to lc problem: No.3697 (doocs#4761)
1 parent b91312c commit 6fed943

File tree

7 files changed

+243
-7
lines changed

7 files changed

+243
-7
lines changed

solution/3600-3699/3697.Compute Decimal Representation/README.md

Lines changed: 87 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,32 +74,115 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3697.Co
7474

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

77-
### 方法一
77+
### 方法一:模拟
78+
79+
我们可以不断地对 $n$ 进行取模和整除操作,取模得到的值乘以当前的位值 $p$ 就是一个 10 进制分量。如果取模的结果不为 $0$,我们就将这个分量加入答案中。然后我们将 $p$ 乘以 $10$,继续处理下一个位。
80+
81+
最后,我们将答案反转,使其按降序排列。
82+
83+
时间复杂度 $O(\log n)$,其中 $n$ 是输入的正整数。空间复杂度 $O(\log n)$,用于存储答案。
7884

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

8187
#### Python3
8288

8389
```python
84-
90+
class Solution:
91+
def decimalRepresentation(self, n: int) -> List[int]:
92+
ans = []
93+
p = 1
94+
while n:
95+
n, v = divmod(n, 10)
96+
if v:
97+
ans.append(p * v)
98+
p *= 10
99+
ans.reverse()
100+
return ans
85101
```
86102

87103
#### Java
88104

89105
```java
90-
106+
class Solution {
107+
public int[] decimalRepresentation(int n) {
108+
List<Integer> parts = new ArrayList<>();
109+
int p = 1;
110+
while (n > 0) {
111+
int v = n % 10;
112+
n /= 10;
113+
if (v != 0) {
114+
parts.add(p * v);
115+
}
116+
p *= 10;
117+
}
118+
Collections.reverse(parts);
119+
int[] ans = new int[parts.size()];
120+
for (int i = 0; i < parts.size(); ++i) {
121+
ans[i] = parts.get(i);
122+
}
123+
return ans;
124+
}
125+
}
91126
```
92127

93128
#### C++
94129

95130
```cpp
96-
131+
class Solution {
132+
public:
133+
vector<int> decimalRepresentation(int n) {
134+
vector<int> ans;
135+
long long p = 1;
136+
while (n > 0) {
137+
int v = n % 10;
138+
n /= 10;
139+
if (v != 0) {
140+
ans.push_back(p * v);
141+
}
142+
p *= 10;
143+
}
144+
reverse(ans.begin(), ans.end());
145+
return ans;
146+
}
147+
};
97148
```
98149
99150
#### Go
100151
101152
```go
153+
func decimalRepresentation(n int) []int {
154+
ans := []int{}
155+
p := 1
156+
for n > 0 {
157+
v := n % 10
158+
n /= 10
159+
if v != 0 {
160+
ans = append(ans, p*v)
161+
}
162+
p *= 10
163+
}
164+
slices.Reverse(ans)
165+
return ans
166+
}
167+
```
102168

169+
#### TypeScript
170+
171+
```ts
172+
function decimalRepresentation(n: number): number[] {
173+
const ans: number[] = [];
174+
let p: number = 1;
175+
while (n) {
176+
const v = n % 10;
177+
n = (n / 10) | 0;
178+
if (v) {
179+
ans.push(p * v);
180+
}
181+
p *= 10;
182+
}
183+
ans.reverse();
184+
return ans;
185+
}
103186
```
104187

105188
<!-- tabs:end -->

solution/3600-3699/3697.Compute Decimal Representation/README_EN.md

Lines changed: 80 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,25 +79,102 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3697.Co
7979
#### Python3
8080

8181
```python
82-
82+
class Solution:
83+
def decimalRepresentation(self, n: int) -> List[int]:
84+
ans = []
85+
p = 1
86+
while n:
87+
n, v = divmod(n, 10)
88+
if v:
89+
ans.append(p * v)
90+
p *= 10
91+
ans.reverse()
92+
return ans
8393
```
8494

8595
#### Java
8696

8797
```java
88-
98+
class Solution {
99+
public int[] decimalRepresentation(int n) {
100+
List<Integer> parts = new ArrayList<>();
101+
int p = 1;
102+
while (n > 0) {
103+
int v = n % 10;
104+
n /= 10;
105+
if (v != 0) {
106+
parts.add(p * v);
107+
}
108+
p *= 10;
109+
}
110+
Collections.reverse(parts);
111+
int[] ans = new int[parts.size()];
112+
for (int i = 0; i < parts.size(); ++i) {
113+
ans[i] = parts.get(i);
114+
}
115+
return ans;
116+
}
117+
}
89118
```
90119

91120
#### C++
92121

93122
```cpp
94-
123+
class Solution {
124+
public:
125+
vector<int> decimalRepresentation(int n) {
126+
vector<int> ans;
127+
long long p = 1;
128+
while (n > 0) {
129+
int v = n % 10;
130+
n /= 10;
131+
if (v != 0) {
132+
ans.push_back(p * v);
133+
}
134+
p *= 10;
135+
}
136+
reverse(ans.begin(), ans.end());
137+
return ans;
138+
}
139+
};
95140
```
96141
97142
#### Go
98143
99144
```go
145+
func decimalRepresentation(n int) []int {
146+
ans := []int{}
147+
p := 1
148+
for n > 0 {
149+
v := n % 10
150+
n /= 10
151+
if v != 0 {
152+
ans = append(ans, p*v)
153+
}
154+
p *= 10
155+
}
156+
slices.Reverse(ans)
157+
return ans
158+
}
159+
```
100160

161+
#### TypeScript
162+
163+
```ts
164+
function decimalRepresentation(n: number): number[] {
165+
const ans: number[] = [];
166+
let p: number = 1;
167+
while (n) {
168+
const v = n % 10;
169+
n = (n / 10) | 0;
170+
if (v) {
171+
ans.push(p * v);
172+
}
173+
p *= 10;
174+
}
175+
ans.reverse();
176+
return ans;
177+
}
101178
```
102179

103180
<!-- tabs:end -->
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public:
3+
vector<int> decimalRepresentation(int n) {
4+
vector<int> ans;
5+
long long p = 1;
6+
while (n > 0) {
7+
int v = n % 10;
8+
n /= 10;
9+
if (v != 0) {
10+
ans.push_back(p * v);
11+
}
12+
p *= 10;
13+
}
14+
reverse(ans.begin(), ans.end());
15+
return ans;
16+
}
17+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func decimalRepresentation(n int) []int {
2+
ans := []int{}
3+
p := 1
4+
for n > 0 {
5+
v := n % 10
6+
n /= 10
7+
if v != 0 {
8+
ans = append(ans, p*v)
9+
}
10+
p *= 10
11+
}
12+
slices.Reverse(ans)
13+
return ans
14+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public int[] decimalRepresentation(int n) {
3+
List<Integer> parts = new ArrayList<>();
4+
int p = 1;
5+
while (n > 0) {
6+
int v = n % 10;
7+
n /= 10;
8+
if (v != 0) {
9+
parts.add(p * v);
10+
}
11+
p *= 10;
12+
}
13+
Collections.reverse(parts);
14+
int[] ans = new int[parts.size()];
15+
for (int i = 0; i < parts.size(); ++i) {
16+
ans[i] = parts.get(i);
17+
}
18+
return ans;
19+
}
20+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution:
2+
def decimalRepresentation(self, n: int) -> List[int]:
3+
ans = []
4+
p = 1
5+
while n:
6+
n, v = divmod(n, 10)
7+
if v:
8+
ans.append(p * v)
9+
p *= 10
10+
ans.reverse()
11+
return ans
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function decimalRepresentation(n: number): number[] {
2+
const ans: number[] = [];
3+
let p: number = 1;
4+
while (n) {
5+
const v = n % 10;
6+
n = (n / 10) | 0;
7+
if (v) {
8+
ans.push(p * v);
9+
}
10+
p *= 10;
11+
}
12+
ans.reverse();
13+
return ans;
14+
}

0 commit comments

Comments
 (0)