diff --git a/problems/0018.四数之和.md b/problems/0018.四数之和.md index 8e34713d..961de9ba 100644 --- a/problems/0018.四数之和.md +++ b/problems/0018.四数之和.md @@ -251,8 +251,8 @@ class Solution { for (int i = 0; i < nums.length; i++) { - // nums[i] > target 直接返回, 剪枝操作 - if (nums[i] > 0 && nums[i] > target) { + // nums[i] >= 0 && nums[i] > target 直接返回, 剪枝操作 + if (nums[i] >= 0 && nums[i] > target) { return result; } @@ -262,10 +262,10 @@ class Solution { for (int j = i + 1; j < nums.length; j++) { - // nums[i]+nums[j] > target 直接返回, 剪枝操作 - if (nums[i]+nums[j] > 0 && nums[i]+nums[j] > target) { - return result; - } + // nums[i] >= 0 && nums[i] + nums[j] > target 剪枝操作 + if (nums[i] >= 0 && nums[i] + nums[j] > target) { + break; + } if (j > i + 1 && nums[j - 1] == nums[j]) { // 对nums[j]去重 continue; @@ -274,7 +274,7 @@ class Solution { int left = j + 1; int right = nums.length - 1; while (right > left) { - // nums[k] + nums[i] + nums[left] + nums[right] > target int会溢出 + // nums[j] + nums[i] + nums[left] + nums[right] int 可能会溢出,需要转为 long long sum = (long) nums[i] + nums[j] + nums[left] + nums[right]; if (sum > target) { right--;