diff --git a/problems/0059.螺旋矩阵II.md b/problems/0059.螺旋矩阵II.md index 8823a0d8..ca2bcc26 100644 --- a/problems/0059.螺旋矩阵II.md +++ b/problems/0059.螺旋矩阵II.md @@ -87,11 +87,11 @@ public: // 下面开始的四个for就是模拟转了一圈 // 模拟填充上行从左到右(左闭右开) - for (j = starty; j < n - offset; j++) { - res[startx][j] = count++; + for (j; j < n - offset; j++) { + res[i][j] = count++; } // 模拟填充右列从上到下(左闭右开) - for (i = startx; i < n - offset; i++) { + for (i; i < n - offset; i++) { res[i][j] = count++; } // 模拟填充下行从右到左(左闭右开) diff --git a/problems/0127.单词接龙.md b/problems/0127.单词接龙.md index 97bc66d0..6f893310 100644 --- a/problems/0127.单词接龙.md +++ b/problems/0127.单词接龙.md @@ -198,7 +198,7 @@ class Solution { ### Python -``` +```python class Solution: def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int: wordSet = set(wordList) diff --git a/problems/0349.两个数组的交集.md b/problems/0349.两个数组的交集.md index d3a1e12f..9902fff8 100644 --- a/problems/0349.两个数组的交集.md +++ b/problems/0349.两个数组的交集.md @@ -231,6 +231,8 @@ class Solution: ### Go: +(版本一)使用字典和集合 + ```go func intersection(nums1 []int, nums2 []int) []int { 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: ```js diff --git a/problems/0496.下一个更大元素I.md b/problems/0496.下一个更大元素I.md index 45797fb6..d97a3e84 100644 --- a/problems/0496.下一个更大元素I.md +++ b/problems/0496.下一个更大元素I.md @@ -256,6 +256,7 @@ class Solution { ### Python3 ```python +# 版本一 class Solution: def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]: result = [-1]*len(nums1) @@ -273,6 +274,26 @@ class Solution: stack.pop() stack.append(i) 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 diff --git a/problems/0503.下一个更大元素II.md b/problems/0503.下一个更大元素II.md index b788968c..6df83fb2 100644 --- a/problems/0503.下一个更大元素II.md +++ b/problems/0503.下一个更大元素II.md @@ -170,7 +170,6 @@ class Solution { ### Python: ```python -# 方法 1: class Solution: def nextGreaterElements(self, nums: List[int]) -> List[int]: dp = [-1] * len(nums) @@ -181,26 +180,6 @@ class Solution: stack.pop() stack.append(i%len(nums)) 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: