Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6fed943

Browse files
feat: add solutions to lc problem: No.3697 (#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)

AltStyle によって変換されたページ (->オリジナル) /