Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions problems/0063.不同路径II.md
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,33 @@ impl Solution {
}
```

空间优化:

```rust
impl Solution {
pub fn unique_paths_with_obstacles(obstacle_grid: Vec<Vec<i32>>) -> i32 {
let mut dp = vec![0; obstacle_grid[0].len()];
for (i, &v) in obstacle_grid[0].iter().enumerate() {
if v == 0 {
dp[i] = 1;
} else {
break;
}
}
for rows in obstacle_grid.iter().skip(1) {
for j in 0..rows.len() {
if rows[j] == 1 {
dp[j] = 0;
} else if j != 0 {
dp[j] += dp[j - 1];
}
}
}
dp.pop().unwrap()
}
}
```

### C

```c
Expand Down
28 changes: 27 additions & 1 deletion problems/0347.前K个高频元素.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,33 @@ class Solution {
}
}
```

简化版代码:
```java
class Solution {
public int[] topKFrequent(int[] nums, int k) {
// 优先级队列,为了避免复杂 api 操作,pq 存储数组
// lambda 表达式设置优先级队列从大到小存储 o1 - o2 为从大到小,o2 - o1 反之
PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> o1[1] - o2[1]);
int[] res = new int[k]; // 答案数组为 k 个元素
Map<Integer, Integer> map = new HashMap<>(); // 记录元素出现次数
for(int num : nums) map.put(num, map.getOrDefault(num, 0) + 1);
for(var x : map.entrySet()) { // entrySet 获取 k-v Set 集合
// 将 kv 转化成数组
int[] tmp = new int[2];
tmp[0] = x.getKey();
tmp[1] = x.getValue();
pq.offer(tmp);
if(pq.size() > k) {
pq.poll();
}
}
for(int i = 0; i < k; i ++) {
res[i] = pq.poll()[0]; // 获取优先队列里的元素
}
return res;
}
}
```

Python:
```python
Expand Down