Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 34d28a9

Browse files
Update 0015.三数之和.md
1 parent c71a9b0 commit 34d28a9

File tree

1 file changed

+3
-10
lines changed

1 file changed

+3
-10
lines changed

‎problems/0015.三数之和.md‎

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
### 哈希解法
3838

39-
两层for循环就可以确定 a 和b 的数值了,可以使用哈希法来确定 0-(a+b) 是否在 数组里出现过,其实这个思路是正确的,但是我们有一个非常棘手的问题,就是题目中说的不可以包含重复的三元组。
39+
两层for循环就可以确定 两个数值,可以使用哈希法来确定 第三个数 0-(a+b) 或者 0 - (a + c) 是否在 数组里出现过,其实这个思路是正确的,但是我们有一个非常棘手的问题,就是题目中说的不可以包含重复的三元组。
4040

4141
把符合条件的三元组放进vector中,然后再去重,这样是非常费时的,很容易超时,也是这道题目通过率如此之低的根源所在。
4242

@@ -51,10 +51,8 @@
5151
class Solution {
5252
public:
5353
// 在一个数组中找到3个数形成的三元组,它们的和为0,不能重复使用(三数下标互不相同),且三元组不能重复。
54-
// 理论解法:a+b+c(存储)==0(检索) <=> c(存储)==0-(a+b)(检索)
55-
// 实际解法:a+b+c(存储)==0(检索) <=> b(存储)==0-(a+c)(检索)
54+
// b(存储)== 0-(a+c)(检索)
5655
vector<vector<int>> threeSum(vector<int>& nums) {
57-
// 本解法的内层循环一边存储一边检索,所以被存储的应该是b,而不是c
5856
vector<vector<int>> result;
5957
sort(nums.begin(), nums.end());
6058

@@ -71,19 +69,14 @@ public:
7169
unordered_set<int> set;
7270

7371
for (int k = i + 1; k < nums.size(); k++) {
74-
// [(-2x), ..., (x), (x), x, x, x, ...]
75-
// eg. [0, 0, 0]
76-
// eg. [-4, 2, 2]
77-
// eg. [(-4), -1, 0, 0, 1, (2), (2), {2}, {2}, 3, 3]
78-
// 去重b=c时的b和c,即第三个x到最后一个x需要被跳过
72+
// 去重b=c时的b和c
7973
if (k > i + 2 && nums[k] == nums[k - 1] && nums[k - 1] == nums[k - 2])
8074
continue;
8175

8276
// a+b+c=0 <=> b=0-(a+c)
8377
int target = 0 - (nums[i] + nums[k]);
8478
if (set.find(target) != set.end()) {
8579
result.push_back({nums[i], target, nums[k]}); // nums[k]成为c
86-
// 内层循环中,a固定,如果find到了和上轮一样的b,那么c也就和上轮一样,所以去重b
8780
set.erase(target);
8881
}
8982
else {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /