Merge branch 'youngyangyang04:master' into master

This commit is contained in:
sss1h
2024-02-05 16:02:03 +08:00
committed by GitHub
5 changed files with 49 additions and 25 deletions

View File

@ -87,11 +87,11 @@ public:
// 下面开始的四个for就是模拟转了一圈 // 下面开始的四个for就是模拟转了一圈
// 模拟填充上行从左到右(左闭右开) // 模拟填充上行从左到右(左闭右开)
for (j = starty; j < n - offset; j++) { for (j; j < n - offset; j++) {
res[startx][j] = count++; res[i][j] = count++;
} }
// 模拟填充右列从上到下(左闭右开) // 模拟填充右列从上到下(左闭右开)
for (i = startx; i < n - offset; i++) { for (i; i < n - offset; i++) {
res[i][j] = count++; res[i][j] = count++;
} }
// 模拟填充下行从右到左(左闭右开) // 模拟填充下行从右到左(左闭右开)

View File

@ -198,7 +198,7 @@ class Solution {
### Python ### Python
``` ```python
class Solution: class Solution:
def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int: def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int:
wordSet = set(wordList) wordSet = set(wordList)

View File

@ -231,6 +231,8 @@ class Solution:
### Go ### Go
(版本一)使用字典和集合
```go ```go
func intersection(nums1 []int, nums2 []int) []int { func intersection(nums1 []int, nums2 []int) []int {
set:=make(map[int]struct{},0) // 用map模拟set set:=make(map[int]struct{},0) // 用map模拟set
@ -251,6 +253,28 @@ func intersection(nums1 []int, nums2 []int) []int {
} }
``` ```
(版本二)使用数组
```go
func intersection(nums1 []int, nums2 []int) []int {
count1 := make([]int, 1001, 1001)
count2 := make([]int, 1001, 1001)
res := make([]int, 0)
for _, v := range nums1 {
count1[v] = 1
}
for _, v := range nums2 {
count2[v] = 1
}
for i := 0; i <= 1000; i++ {
if count1[i] + count2[i] == 2 {
res = append(res, i)
}
}
return res
}
```
### JavaScript: ### JavaScript:
```js ```js

View File

@ -256,6 +256,7 @@ class Solution {
### Python3 ### Python3
```python ```python
# 版本一
class Solution: class Solution:
def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]: def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
result = [-1]*len(nums1) result = [-1]*len(nums1)
@ -273,6 +274,26 @@ class Solution:
stack.pop() stack.pop()
stack.append(i) stack.append(i)
return result return result
# 版本二
class Solution:
def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
stack = []
# 创建答案数组
ans = [-1] * len(nums1)
for i in range(len(nums2)):
while len(stack) > 0 and nums2[i] > nums2[stack[-1]]:
# 判断 num1 是否有 nums2[stack[-1]]。如果没有这个判断会出现指针异常
if nums2[stack[-1]] in nums1:
# 锁定 num1 检索的 index
index = nums1.index(nums2[stack[-1]])
# 更新答案数组
ans[index] = nums2[i]
# 弹出小元素
# 这个代码一定要放在 if 外面。否则单调栈的逻辑就不成立了
stack.pop()
stack.append(i)
return ans
``` ```
### Go ### Go

View File

@ -170,7 +170,6 @@ class Solution {
### Python: ### Python:
```python ```python
# 方法 1:
class Solution: class Solution:
def nextGreaterElements(self, nums: List[int]) -> List[int]: def nextGreaterElements(self, nums: List[int]) -> List[int]:
dp = [-1] * len(nums) dp = [-1] * len(nums)
@ -181,26 +180,6 @@ class Solution:
stack.pop() stack.pop()
stack.append(i%len(nums)) stack.append(i%len(nums))
return dp return dp
# 方法 2:
class Solution:
def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
stack = []
# 创建答案数组
ans = [-1] * len(nums1)
for i in range(len(nums2)):
while len(stack) > 0 and nums2[i] > nums2[stack[-1]]:
# 判断 num1 是否有 nums2[stack[-1]]。如果没有这个判断会出现指针异常
if nums2[stack[-1]] in nums1:
# 锁定 num1 检索的 index
index = nums1.index(nums2[stack[-1]])
# 更新答案数组
ans[index] = nums2[i]
# 弹出小元素
# 这个代码一定要放在 if 外面。否则单调栈的逻辑就不成立了
stack.pop()
stack.append(i)
return ans
``` ```
### Go: ### Go: