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 dada3ef

Browse files
Merge branch 'master' of github.com:youngyangyang04/leetcode-master
2 parents 631b333 + d215f07 commit dada3ef

9 files changed

+317
-9
lines changed

‎problems/0017.电话号码的字母组合.md‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,44 @@ object Solution {
694694
}
695695
```
696696

697+
### Ruby
698+
```ruby
699+
def letter_combinations(digits)
700+
letter_map = {
701+
2 => ['a','b','c'],
702+
3 => ['d','e','f'],
703+
4 => ['g','h','i'],
704+
5 => ['j','k','l'],
705+
6 => ['m','n','o'],
706+
7 => ['p','q','r','s'],
707+
8 => ['t','u','v'],
708+
9 => ['w','x','y','z']
709+
}
710+
711+
result = []
712+
path = []
713+
714+
return result if digits.size == 0
715+
716+
backtracking(result, letter_map, digits.split(''), path, 0)
717+
result
718+
end
719+
720+
def backtracking(result, letter_map, digits, path, index)
721+
if path.size == digits.size
722+
result << path.join('')
723+
return
724+
end
725+
726+
hash[digits[index].to_i].each do |chr|
727+
path << chr
728+
#index + 1代表处理下一个数字
729+
backtracking(result, letter_map, digits, path, index + 1)
730+
#回溯,撤销处理过的数字
731+
path.pop
732+
end
733+
end
734+
```
697735

698736
<p align="center">
699737
<a href="https://programmercarl.com/other/kstar.html" target="_blank">

‎problems/0077.组合.md‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,35 @@ object Solution {
764764
}
765765
```
766766

767+
### Ruby
768+
769+
```ruby
770+
771+
def combine(n, k)
772+
result = []
773+
path = []
774+
backtracking(result, path, n, 1, k)
775+
return result
776+
end
777+
778+
#剪枝优化
779+
def backtracking(result, path, n, j, k)
780+
if path.size == k
781+
result << path.map {|item| item}
782+
return
783+
end
784+
785+
for i in j..(n-(k - path.size)) + 1
786+
#处理节点
787+
path << i
788+
backtracking(result, path, n, i + 1, k)
789+
#回溯,撤销处理过的节点
790+
path.pop
791+
end
792+
end
793+
794+
```
795+
767796
<p align="center">
768797
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
769798
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>

‎problems/0151.翻转字符串里的单词.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ class Solution {
311311
```
312312

313313
```java
314-
//解法三:双反转+移位,在原始数组上进行反转。空间复杂度O(1)
314+
//解法三:双反转+移位,String 的 toCharArray() 方法底层会 new 一个和原字符串相同大小的 char 数组,空间复杂度:O(n)
315315
class Solution {
316316
/**
317317
* 思路:

‎problems/0200.岛屿数量.广搜版.md‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,42 @@ class Solution:
239239
visited[next_i][next_j] = True
240240

241241
```
242+
### JavaScript
243+
```javascript
244+
var numIslands = function (grid) {
245+
let dir = [[0, 1], [1, 0], [-1, 0], [0, -1]]; // 四个方向
246+
let bfs = (grid, visited, x, y) => {
247+
let queue = [];
248+
queue.push([x, y]);
249+
visited[x][y] = true;
250+
while (queue.length) {
251+
let top = queue.shift();//取出队列头部元素
252+
console.log(top)
253+
for (let i = 0; i < 4; i++) {
254+
let nextX = top[0] + dir[i][0]
255+
let nextY = top[1] + dir[i][1]
256+
if (nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length)
257+
continue;
258+
if (!visited[nextX][nextY] && grid[nextX][nextY] === "1") {
259+
queue.push([nextX, nextY])
260+
visited[nextX][nextY] = true
261+
}
262+
}
263+
}
264+
}
265+
let visited = new Array(grid.length).fill().map(() => Array(grid[0].length).fill(false))
266+
let res = 0
267+
for (let i = 0; i < grid.length; i++) {
268+
for (let j = 0; j < grid[i].length; j++) {
269+
if (!visited[i][j] && grid[i][j] === "1") {
270+
++res;
271+
bfs(grid, visited, i, j);
272+
}
273+
}
274+
}
275+
return res
276+
};
277+
```
242278

243279
### Rust
244280

‎problems/0200.岛屿数量.深搜版.md‎

Lines changed: 85 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class Solution {
219219
}
220220
```
221221

222-
Python:
222+
### Python:
223223

224224
```python
225225
# 版本一
@@ -278,8 +278,91 @@ class Solution:
278278

279279
return result
280280
```
281+
### JavaScript
281282

282-
Rust:
283+
```javascript
284+
var numIslands = function (grid) {
285+
let dir = [[0, 1], [1, 0], [-1, 0], [0, -1]]; // 四个方向
286+
287+
let dfs = (grid, visited, x, y) => {
288+
for (let i = 0; i < 4; i++) {
289+
let nextX = x + dir[i][0]
290+
let nextY = y + dir[i][1]
291+
if (nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length)
292+
continue;
293+
if (!visited[nextX][nextY] && grid[nextX][nextY] === "1") {
294+
visited[nextX][nextY] = true
295+
dfs(grid,visited,nextX,nextY)
296+
}
297+
}
298+
}
299+
let visited = new Array(grid.length).fill().map(() => Array(grid[0].length).fill(false))
300+
301+
let res = 0
302+
for (let i = 0; i < grid.length; i++) {
303+
for (let j = 0; j < grid[i].length; j++) {
304+
if (!visited[i][j] && grid[i][j] === "1") {
305+
++res;
306+
visited[i][j] = true;
307+
dfs(grid, visited, i, j);
308+
}
309+
}
310+
}
311+
return res
312+
};
313+
```
314+
315+
### Go
316+
317+
```go
318+
func numIslands(grid [][]byte) int {
319+
// 用1标记已访问
320+
visited := make([][]int, len(grid))
321+
for i := 0; i < len(visited); i++{
322+
visited[i] = make([]int, len(grid[0]))
323+
}
324+
325+
var bfs func(x, y int)
326+
bfs = func(x, y int){
327+
stack := make([][]int, 0)
328+
stack = append(stack, []int{x, y})
329+
moveX := []int{1, -1, 0, 0}
330+
moveY := []int{0, 0, 1, -1}
331+
332+
for len(stack) != 0{
333+
node := stack[len(stack) - 1]
334+
stack = stack[:len(stack) - 1]
335+
336+
for i := 0; i < 4; i++{
337+
dx := moveX[i] + node[0]
338+
dy := moveY[i] + node[1]
339+
if dx < 0 || dx >= len(grid) || dy < 0 || dy >= len(grid[0]) || visited[dx][dy] == 1{
340+
continue
341+
}
342+
visited[dx][dy] = 1
343+
if grid[dx][dy] == '1'{
344+
stack = append(stack, []int{dx,dy})
345+
}
346+
}
347+
}
348+
}
349+
350+
result := 0
351+
for i := 0; i < len(grid); i++{
352+
for j := 0; j < len(grid[0]); j++{
353+
if visited[i][j] == 0 && grid[i][j] == '1'{
354+
bfs(i, j)
355+
visited[i][j] = 1
356+
result++
357+
}
358+
}
359+
}
360+
361+
return result
362+
}
363+
```
364+
365+
### Rust:
283366

284367

285368
```rust

‎problems/0225.用队列实现栈.md‎

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -454,13 +454,34 @@ class MyStack:
454454

455455
def top(self) -> int:
456456
"""
457+
写法一:
457458
1. 首先确认不空
458-
2. 我们仅有in会存放数据,所以返回第一个即可
459+
2. 我们仅有in会存放数据,所以返回第一个即可(这里实际上用到了栈)
460+
写法二:
461+
1. 首先确认不空
462+
2. 因为队列的特殊性,FIFO,所以我们只有在pop()的时候才会使用queue_out
463+
3. 先把queue_in中的所有元素(除了最后一个),依次出列放进queue_out
464+
4. 交换in和out,此时out里只有一个元素
465+
5. 把out中的pop出来,即是原队列的最后一个,并使用temp变量暂存
466+
6. 把temp追加到queue_in的末尾
459467
"""
468+
# 写法一:
469+
# if self.empty():
470+
# return None
471+
472+
# return self.queue_in[-1] # 这里实际上用到了栈,因为直接获取了queue_in的末尾元素
473+
474+
# 写法二:
460475
if self.empty():
461476
return None
477+
478+
for i in range(len(self.queue_in) - 1):
479+
self.queue_out.append(self.queue_in.popleft())
462480

463-
return self.queue_in[-1]
481+
self.queue_in, self.queue_out = self.queue_out, self.queue_in
482+
temp = self.queue_out.popleft()
483+
self.queue_in.append(temp)
484+
return temp
464485

465486

466487
def empty(self) -> bool:
@@ -488,9 +509,19 @@ class MyStack:
488509
return self.que.popleft()
489510

490511
def top(self) -> int:
512+
# 写法一:
513+
# if self.empty():
514+
# return None
515+
# return self.que[-1]
516+
517+
# 写法二:
491518
if self.empty():
492519
return None
493-
return self.que[-1]
520+
for i in range(len(self.que)-1):
521+
self.que.append(self.que.popleft())
522+
temp = self.que.popleft()
523+
self.que.append(temp)
524+
return temp
494525

495526
def empty(self) -> bool:
496527
return not self.que

‎problems/0695.岛屿的最大面积.md‎

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,44 @@ class Solution:
391391
self.dfs(grid, visited, new_x, new_y)
392392
```
393393

394+
### JavaScript
395+
```javascript
396+
var maxAreaOfIsland = function (grid) {
397+
let dir = [[0, 1], [1, 0], [-1, 0], [0, -1]]; // 四个方向
398+
399+
let visited = new Array(grid.length).fill().map(() => Array(grid[0].length).fill(false))
400+
401+
let dfs = (grid, visited, x, y, m) => {
402+
for (let i = 0; i < 4; i++) {
403+
let nextX = x + dir[i][0]
404+
let nextY = y + dir[i][1]
405+
if (nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length)
406+
continue;
407+
if (!visited[nextX][nextY] && grid[nextX][nextY] === 1) {
408+
visited[nextX][nextY] = true
409+
m = dfs(grid, visited, nextX, nextY,m+1)
410+
}
411+
}
412+
return m
413+
}
414+
415+
let max = 0
416+
417+
for (let i = 0; i < grid.length; i++) {
418+
for (let j = 0; j < grid[i].length; j++) {
419+
if (!visited[i][j] && grid[i][j] === 1) {
420+
// 深度优先
421+
visited[i][j] = true;
422+
let m = dfs(grid, visited, i, j, 1);
423+
if (m > max) max = m;
424+
}
425+
}
426+
}
427+
return max
428+
};
429+
```
430+
431+
394432
### Rust
395433

396434
dfs: 版本一
@@ -530,7 +568,6 @@ impl Solution {
530568
}
531569
}
532570
```
533-
534571
<p align="center">
535572
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
536573
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>

0 commit comments

Comments
(0)

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