Skip to content

Commit dd0335d

Browse files
authored
Merge branch 'youngyangyang04:master' into master
2 parents 359acd6 + ba03a17 commit dd0335d

14 files changed

+135
-13
lines changed

problems/0001.两数之和.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,26 @@ impl Solution {
216216
}
217217
}
218218
```
219+
Rust
220+
221+
```
222+
use std::collections::HashMap;
223+
224+
impl Solution {
225+
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
226+
let mut hm: HashMap<i32, i32> = HashMap::new();
227+
for i in 0..nums.len() {
228+
let j = target - nums[i];
229+
if hm.contains_key(&j) {
230+
return vec![*hm.get(&j).unwrap(), i as i32]
231+
} else {
232+
hm.insert(nums[i], i as i32);
233+
}
234+
}
235+
vec![-1, -1]
236+
}
237+
}
238+
```
219239

220240
Javascript
221241

problems/0020.有效的括号.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ public:
135135
};
136136

137137
```
138+
* 时间复杂度: O(n)
139+
* 空间复杂度: O(n)
140+
138141
技巧性的东西没有固定的学习方法,还是要多看多练,自己灵活运用了。
139142
140143

problems/0056.合并区间.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,34 @@ func max(a, b int) int {
177177
return b
178178
}
179179
```
180+
```go
181+
// 版本2
182+
func merge(intervals [][]int) [][]int {
183+
if len(intervals) == 1 {
184+
return intervals
185+
}
186+
sort.Slice(intervals, func(i, j int) bool {
187+
return intervals[i][0] < intervals[j][0]
188+
})
189+
res := make([][]int, 0)
190+
res = append(res, intervals[0])
191+
for i := 1; i < len(intervals); i++ {
192+
if intervals[i][0] <= res[len(res)-1][1]{
193+
res[len(res)-1][1] = max56(res[len(res)-1][1],intervals[i][1])
194+
} else {
195+
res = append(res, intervals[i])
196+
}
197+
}
198+
return res
199+
}
200+
func max56(a, b int) int {
201+
if a > b {
202+
return a
203+
}
204+
return b
205+
}
206+
```
207+
180208

181209
### Javascript
182210
```javascript

problems/0070.爬楼梯.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ dp[i]: 爬到第i层楼梯,有dp[i]种方法
7272

7373
3. dp数组如何初始化
7474

75-
再回顾一下dp[i]的定义:爬到第i层楼梯,有dp[i]中方法
75+
再回顾一下dp[i]的定义:爬到第i层楼梯,有dp[i]种方法
7676

7777
那么i为0,dp[i]应该是多少呢,这个可以有很多解释,但基本都是直接奔着答案去解释的。
7878

problems/0150.逆波兰表达式求值.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ public:
113113
};
114114

115115
```
116+
* 时间复杂度: O(n)
117+
* 空间复杂度: O(n)
118+
116119

117120
## 题外话
118121

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ public:
111111
}
112112
};
113113
```
114+
* 时间复杂度: push为O(n),其他为O(1)
115+
* 空间复杂度: O(n)
114116
115117
# 优化
116118
@@ -156,6 +158,9 @@ public:
156158
}
157159
};
158160
```
161+
* 时间复杂度: push为O(n),其他为O(1)
162+
* 空间复杂度: O(n)
163+
159164

160165
# 其他语言版本
161166

problems/0232.用栈实现队列.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ public:
112112

113113
```
114114
115+
* 时间复杂度: push和empty为O(1), pop和peek为O(n)
116+
* 空间复杂度: O(n)
117+
118+
115119
## 拓展
116120
117121
可以看出peek()的实现,直接复用了pop(), 要不然,对stOut判空的逻辑又要重写一遍。

problems/0239.滑动窗口最大值.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ public:
184184
}
185185
};
186186
```
187+
* 时间复杂度: O(n)
188+
* 空间复杂度: O(k)
189+
187190

188191
再来看一下时间复杂度,使用单调队列的时间复杂度是 O(n)。
189192

problems/0347.前K个高频元素.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,6 @@
7979

8080

8181
```CPP
82-
// 时间复杂度:O(nlogk)
83-
// 空间复杂度:O(n)
8482
class Solution {
8583
public:
8684
// 小顶堆
@@ -120,6 +118,10 @@ public:
120118
}
121119
};
122120
```
121+
122+
* 时间复杂度: O(nlogk)
123+
* 空间复杂度: O(n)
124+
123125
# 拓展
124126
大家对这个比较运算在建堆时是如何应用的,为什么左大于右就会建立小顶堆,反而建立大顶堆比较困惑。
125127

problems/0454.四数相加II.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,26 +97,25 @@ Java:
9797
```Java
9898
class Solution {
9999
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
100-
Map<Integer, Integer> map = new HashMap<>();
101-
int temp;
102100
int res = 0;
101+
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
103102
//统计两个数组中的元素之和,同时统计出现的次数,放入map
104103
for (int i : nums1) {
105104
for (int j : nums2) {
106-
temp = i + j;
107-
if (map.containsKey(temp)) {
108-
map.put(temp, map.get(temp) + 1);
105+
int tmp = map.getOrDefault(i + j, 0);
106+
if (tmp == 0) {
107+
map.put(i + j, 1);
109108
} else {
110-
map.put(temp, 1);
109+
map.replace(i + j, tmp + 1);
111110
}
112111
}
113112
}
114113
//统计剩余的两个元素的和,在map中找是否存在相加为0的情况,同时记录次数
115114
for (int i : nums3) {
116115
for (int j : nums4) {
117-
temp = i + j;
118-
if (map.containsKey(0 - temp)) {
119-
res += map.get(0 - temp);
116+
int tmp = map.getOrDefault(0 - i - j, 0);
117+
if (tmp != 0) {
118+
res += tmp;
120119
}
121120
}
122121
}

0 commit comments

Comments
 (0)