Skip to content

Commit b2fa3bf

Browse files
committed
Daily Code
1 parent d021c98 commit b2fa3bf

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

solution/015.3Sum/README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
### 解法
1818
先对数组进行排序,遍历数组,固定第一个数i。利用两个指针 p, q 分别指示 i+1, n-1。如果三数之和为0,移动 p, q;如果大于 0,左移 q;如果小于 0,右移 p。遍历到 nums[i] > 0 时,退出循环。
1919

20+
还要注意过滤重复元素
21+
2022
```java
2123
class Solution {
2224
public List<List<Integer>> threeSum(int[] nums) {
@@ -64,4 +66,49 @@ class Solution {
6466
}
6567

6668
}
69+
```
70+
71+
#### CPP
72+
73+
```CPP
74+
class Solution {
75+
public:
76+
vector<vector<int>> threeSum(vector<int>& nums) {
77+
sort(nums.begin(),nums.end());
78+
79+
vector<vector<int>> ans;
80+
81+
int sum;
82+
int len = nums.size();
83+
int left,right;
84+
for(int i = 0; i< len;i++){
85+
left = i + 1;
86+
right = len - 1;
87+
while(left < right){
88+
sum = nums[i] + nums[left] + nums[right];
89+
if(sum == 0){
90+
vector<int> vec;
91+
vec.push_back(nums[i]);
92+
vec.push_back(nums[left]);
93+
vec.push_back(nums[right]);
94+
ans.push_back(vec);
95+
96+
while(left < right && nums[left] == nums[left + 1])left++;
97+
while(left < right && nums[right] == nums[right - 1])right--;
98+
99+
left++;
100+
right--;
101+
102+
}
103+
if(sum > 0)right--;
104+
if(sum < 0)left++;
105+
}
106+
107+
while(i<len-1 && nums[i] == nums[i+1])i++;
108+
}
109+
110+
return ans;
111+
112+
}
113+
};
67114
```

solution/023.Merge k Sorted Lists/README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,17 @@
2020
--------------------------------
2121
思路1: 170ms
2222
用第一个链依次和后面的所有链进行双链合并,利用021的双顺序链合并,秒杀!但是效率极低
23-
时间复杂度是O(x(a+b) + (x-1)(a+b+c) + ... + 1 * (a+b+...+z);
24-
时间复杂度是极大的
23+
24+
时间复杂度是O(x(a+b) + (x-1)(a+b+c) + ... + 1 * (a+b+...+z);[a-z]是各链表长度,x表示链表个数-1
25+
26+
可见时间复杂度是极大的
2527

2628

2729
思路2: 20ms
2830
1.因为链表有序,所以用每个链表的首元素构建初试堆(小顶堆) -- 的队列
29-
2.首元素出队,该元素出队
31+
32+
2.首元素出队,该元素next指向元素入队
33+
3034
时间复杂度是O(n)
3135

3236
```java

0 commit comments

Comments
 (0)