Skip to content

Commit 38b5291

Browse files
authored
feat: update solutions to lc problems: No.412,416 (#3022)
1 parent 8490191 commit 38b5291

File tree

16 files changed

+220
-181
lines changed

16 files changed

+220
-181
lines changed

solution/0400-0499/0412.Fizz Buzz/README.md

+46-26
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ tags:
6363

6464
<!-- solution:start -->
6565

66-
### 方法一
66+
### 方法一:模拟
67+
68+
我们遍历从 1 到 n 的每个整数,对于每个整数,我们检查它是否是 3 和 5 的倍数,或者只是 3 的倍数,或者只是 5 的倍数。根据检查的结果,我们将相应的字符串添加到答案数组中。
69+
70+
时间复杂度 $O(n)$,其中 $n$ 是题目给定的整数。忽略答案数组的空间消耗,空间复杂度 $O(1)$。
6771

6872
<!-- tabs:start -->
6973

@@ -118,9 +122,15 @@ public:
118122
vector<string> ans;
119123
for (int i = 1; i <= n; ++i) {
120124
string s = "";
121-
if (i % 3 == 0) s += "Fizz";
122-
if (i % 5 == 0) s += "Buzz";
123-
if (s.size() == 0) s = to_string(i);
125+
if (i % 3 == 0) {
126+
s += "Fizz";
127+
}
128+
if (i % 5 == 0) {
129+
s += "Buzz";
130+
}
131+
if (s.empty()) {
132+
s = to_string(i);
133+
}
124134
ans.push_back(s);
125135
}
126136
return ans;
@@ -131,8 +141,7 @@ public:
131141
#### Go
132142
133143
```go
134-
func fizzBuzz(n int) []string {
135-
var ans []string
144+
func fizzBuzz(n int) (ans []string) {
136145
for i := 1; i <= n; i++ {
137146
s := &strings.Builder{}
138147
if i%3 == 0 {
@@ -146,22 +155,31 @@ func fizzBuzz(n int) []string {
146155
}
147156
ans = append(ans, s.String())
148157
}
149-
return ans
158+
return
150159
}
151160
```
152161

153162
#### JavaScript
154163

155164
```js
156-
const fizzBuzz = function (n) {
157-
let arr = [];
158-
for (let i = 1; i <= n; i++) {
159-
if (i % 15 === 0) arr.push('FizzBuzz');
160-
else if (i % 3 === 0) arr.push('Fizz');
161-
else if (i % 5 === 0) arr.push('Buzz');
162-
else arr.push(`${i}`);
165+
/**
166+
* @param {number} n
167+
* @return {string[]}
168+
*/
169+
var fizzBuzz = function (n) {
170+
const ans = [];
171+
for (let i = 1; i <= n; ++i) {
172+
if (i % 15 === 0) {
173+
ans.push('FizzBuzz');
174+
} else if (i % 3 === 0) {
175+
ans.push('Fizz');
176+
} else if (i % 5 === 0) {
177+
ans.push('Buzz');
178+
} else {
179+
ans.push(`${i}`);
180+
}
163181
}
164-
return arr;
182+
return ans;
165183
};
166184
```
167185

@@ -174,19 +192,21 @@ class Solution {
174192
* @return String[]
175193
*/
176194
function fizzBuzz($n) {
177-
$rs = [];
178-
for ($i = 1; $i <= $n; $i++) {
179-
if ($i % 3 != 0 && $i % 5 != 0) {
180-
array_push($rs, strval($i));
181-
} elseif ($i % 3 == 0 && $i % 5 != 0) {
182-
array_push($rs, 'Fizz');
183-
} elseif ($i % 3 != 0 && $i % 5 == 0) {
184-
array_push($rs, 'Buzz');
185-
} else {
186-
array_push($rs, 'FizzBuzz');
195+
$ans = [];
196+
for ($i = 1; $i <= $n; ++$i) {
197+
$s = '';
198+
if ($i % 3 == 0) {
199+
$s .= 'Fizz';
200+
}
201+
if ($i % 5 == 0) {
202+
$s .= 'Buzz';
203+
}
204+
if (strlen($s) == 0) {
205+
$s .= $i;
187206
}
207+
$ans[] = $s;
188208
}
189-
return $rs;
209+
return $ans;
190210
}
191211
}
192212
```

solution/0400-0499/0412.Fizz Buzz/README_EN.md

+46-26
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ tags:
5151

5252
<!-- solution:start -->
5353

54-
### Solution 1
54+
### Solution 1: Simulation
55+
56+
We iterate through each integer from 1 to $n$. For each integer, we check whether it is a multiple of both 3 and 5, or just a multiple of 3, or just a multiple of 5. Based on the check result, we add the corresponding string to the answer array.
57+
58+
The time complexity is $O(n)$, where $n$ is the integer given in the problem. Ignoring the space consumption of the answer array, the space complexity is $O(1)$.
5559

5660
<!-- tabs:start -->
5761

@@ -106,9 +110,15 @@ public:
106110
vector<string> ans;
107111
for (int i = 1; i <= n; ++i) {
108112
string s = "";
109-
if (i % 3 == 0) s += "Fizz";
110-
if (i % 5 == 0) s += "Buzz";
111-
if (s.size() == 0) s = to_string(i);
113+
if (i % 3 == 0) {
114+
s += "Fizz";
115+
}
116+
if (i % 5 == 0) {
117+
s += "Buzz";
118+
}
119+
if (s.empty()) {
120+
s = to_string(i);
121+
}
112122
ans.push_back(s);
113123
}
114124
return ans;
@@ -119,8 +129,7 @@ public:
119129
#### Go
120130
121131
```go
122-
func fizzBuzz(n int) []string {
123-
var ans []string
132+
func fizzBuzz(n int) (ans []string) {
124133
for i := 1; i <= n; i++ {
125134
s := &strings.Builder{}
126135
if i%3 == 0 {
@@ -134,22 +143,31 @@ func fizzBuzz(n int) []string {
134143
}
135144
ans = append(ans, s.String())
136145
}
137-
return ans
146+
return
138147
}
139148
```
140149

141150
#### JavaScript
142151

143152
```js
144-
const fizzBuzz = function (n) {
145-
let arr = [];
146-
for (let i = 1; i <= n; i++) {
147-
if (i % 15 === 0) arr.push('FizzBuzz');
148-
else if (i % 3 === 0) arr.push('Fizz');
149-
else if (i % 5 === 0) arr.push('Buzz');
150-
else arr.push(`${i}`);
153+
/**
154+
* @param {number} n
155+
* @return {string[]}
156+
*/
157+
var fizzBuzz = function (n) {
158+
const ans = [];
159+
for (let i = 1; i <= n; ++i) {
160+
if (i % 15 === 0) {
161+
ans.push('FizzBuzz');
162+
} else if (i % 3 === 0) {
163+
ans.push('Fizz');
164+
} else if (i % 5 === 0) {
165+
ans.push('Buzz');
166+
} else {
167+
ans.push(`${i}`);
168+
}
151169
}
152-
return arr;
170+
return ans;
153171
};
154172
```
155173

@@ -162,19 +180,21 @@ class Solution {
162180
* @return String[]
163181
*/
164182
function fizzBuzz($n) {
165-
$rs = [];
166-
for ($i = 1; $i <= $n; $i++) {
167-
if ($i % 3 != 0 && $i % 5 != 0) {
168-
array_push($rs, strval($i));
169-
} elseif ($i % 3 == 0 && $i % 5 != 0) {
170-
array_push($rs, 'Fizz');
171-
} elseif ($i % 3 != 0 && $i % 5 == 0) {
172-
array_push($rs, 'Buzz');
173-
} else {
174-
array_push($rs, 'FizzBuzz');
183+
$ans = [];
184+
for ($i = 1; $i <= $n; ++$i) {
185+
$s = '';
186+
if ($i % 3 == 0) {
187+
$s .= 'Fizz';
188+
}
189+
if ($i % 5 == 0) {
190+
$s .= 'Buzz';
191+
}
192+
if (strlen($s) == 0) {
193+
$s .= $i;
175194
}
195+
$ans[] = $s;
176196
}
177-
return $rs;
197+
return $ans;
178198
}
179199
}
180200
```

solution/0400-0499/0412.Fizz Buzz/Solution.cpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@ class Solution {
44
vector<string> ans;
55
for (int i = 1; i <= n; ++i) {
66
string s = "";
7-
if (i % 3 == 0) s += "Fizz";
8-
if (i % 5 == 0) s += "Buzz";
9-
if (s.size() == 0) s = to_string(i);
7+
if (i % 3 == 0) {
8+
s += "Fizz";
9+
}
10+
if (i % 5 == 0) {
11+
s += "Buzz";
12+
}
13+
if (s.empty()) {
14+
s = to_string(i);
15+
}
1016
ans.push_back(s);
1117
}
1218
return ans;

solution/0400-0499/0412.Fizz Buzz/Solution.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
func fizzBuzz(n int) []string {
2-
var ans []string
1+
func fizzBuzz(n int) (ans []string) {
32
for i := 1; i <= n; i++ {
43
s := &strings.Builder{}
54
if i%3 == 0 {
@@ -13,5 +12,5 @@ func fizzBuzz(n int) []string {
1312
}
1413
ans = append(ans, s.String())
1514
}
16-
return ans
15+
return
1716
}
+17-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
1-
const fizzBuzz = function (n) {
2-
let arr = [];
3-
for (let i = 1; i <= n; i++) {
4-
if (i % 15 === 0) arr.push('FizzBuzz');
5-
else if (i % 3 === 0) arr.push('Fizz');
6-
else if (i % 5 === 0) arr.push('Buzz');
7-
else arr.push(`${i}`);
1+
/**
2+
* @param {number} n
3+
* @return {string[]}
4+
*/
5+
var fizzBuzz = function (n) {
6+
const ans = [];
7+
for (let i = 1; i <= n; ++i) {
8+
if (i % 15 === 0) {
9+
ans.push('FizzBuzz');
10+
} else if (i % 3 === 0) {
11+
ans.push('Fizz');
12+
} else if (i % 5 === 0) {
13+
ans.push('Buzz');
14+
} else {
15+
ans.push(`${i}`);
16+
}
817
}
9-
return arr;
18+
return ans;
1019
};

solution/0400-0499/0412.Fizz Buzz/Solution.php

+14-12
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@ class Solution {
44
* @return String[]
55
*/
66
function fizzBuzz($n) {
7-
$rs = [];
8-
for ($i = 1; $i <= $n; $i++) {
9-
if ($i % 3 != 0 && $i % 5 != 0) {
10-
array_push($rs, strval($i));
11-
} elseif ($i % 3 == 0 && $i % 5 != 0) {
12-
array_push($rs, 'Fizz');
13-
} elseif ($i % 3 != 0 && $i % 5 == 0) {
14-
array_push($rs, 'Buzz');
15-
} else {
16-
array_push($rs, 'FizzBuzz');
7+
$ans = [];
8+
for ($i = 1; $i <= $n; ++$i) {
9+
$s = '';
10+
if ($i % 3 == 0) {
11+
$s .= 'Fizz';
1712
}
13+
if ($i % 5 == 0) {
14+
$s .= 'Buzz';
15+
}
16+
if (strlen($s) == 0) {
17+
$s .= $i;
18+
}
19+
$ans[] = $s;
1820
}
19-
return $rs;
21+
return $ans;
2022
}
21-
}
23+
}

solution/0400-0499/0413.Arithmetic Slices/README.md

+4-31
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ tags:
6767

6868
我们用 $d$ 表示当前相邻两个元素的差值,用 $cnt$ 表示当前等差数列的长度,初始时 $d = 3000$, $cnt = 2$。
6969

70-
遍历数组 `nums`,对于相邻的两个元素 $a$ 和 $b$,如果 $b - a = d$,则说明当前元素 $b$ 也属于当前等差数列,此时 $cnt$ 自增 1;否则说明当前元素 $b$ 不属于当前等差数列,此时更新 $d = b - a$,$cnt = 2$。如果 $cnt \ge 3$,则说明当前等差数列的长度至少为 3,此时等差数列的个数为 $cnt - 2$,将其加到答案中。
70+
遍历数组 `nums`,对于相邻的两个元素 $a$ 和 $b$,如果 $b - a = d$,则说明当前元素 $b$ 也属于当前等差数列,此时 $cnt$ 自增 1;否则说明当前元素 $b$ 不属于当前等差数列,此时更新 $d = b - a$,$cnt = 2$。如果 $cnt \ge 3$,则说明当前等差数列的长度至少为 3,此时等差数列的个数为 $cnt - 2$,将其加到答案中。
7171

7272
遍历结束后,即可得到答案。
7373

@@ -87,15 +87,15 @@ tags:
8787
```python
8888
class Solution:
8989
def numberOfArithmeticSlices(self, nums: List[int]) -> int:
90-
ans, cnt = 0, 2
90+
ans = cnt = 0
9191
d = 3000
9292
for a, b in pairwise(nums):
9393
if b - a == d:
9494
cnt += 1
9595
else:
9696
d = b - a
97-
cnt = 2
98-
ans += max(0, cnt - 2)
97+
cnt = 0
98+
ans += cnt
9999
return ans
100100
```
101101

@@ -187,31 +187,4 @@ function numberOfArithmeticSlices(nums: number[]): number {
187187

188188
<!-- solution:end -->
189189

190-
<!-- solution:start -->
191-
192-
### 方法二
193-
194-
<!-- tabs:start -->
195-
196-
#### Python3
197-
198-
```python
199-
class Solution:
200-
def numberOfArithmeticSlices(self, nums: List[int]) -> int:
201-
ans = cnt = 0
202-
d = 3000
203-
for a, b in pairwise(nums):
204-
if b - a == d:
205-
cnt += 1
206-
else:
207-
d = b - a
208-
cnt = 0
209-
ans += cnt
210-
return ans
211-
```
212-
213-
<!-- tabs:end -->
214-
215-
<!-- solution:end -->
216-
217190
<!-- problem:end -->

0 commit comments

Comments
 (0)