From 2de05852ea1d92eb667268f253c81d4cc7f1789e Mon Sep 17 00:00:00 2001 From: ironartisan Date: Sun, 22 Aug 2021 21:48:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A00018.=E5=9B=9B=E6=95=B0?= =?UTF-8?q?=E4=B9=8B=E5=92=8C=E5=8F=8C=E6=8C=87=E9=92=88=E6=B3=95python3?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0018.四数之和.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/problems/0018.四数之和.md b/problems/0018.四数之和.md index 66f06f64..6af033b9 100644 --- a/problems/0018.四数之和.md +++ b/problems/0018.四数之和.md @@ -167,7 +167,33 @@ class Solution { Python: ```python +# 双指针法 +class Solution: + def fourSum(self, nums: List[int], target: int) -> List[List[int]]: + + nums.sort() + n = len(nums) + res = [] + for i in range(n): + if i > 0 and nums[i] == nums[i - 1]: continue + for k in range(i+1, n): + if k > i + 1 and nums[k] == nums[k-1]: continue + p = k + 1 + q = n - 1 + while p < q: + if nums[i] + nums[k] + nums[p] + nums[q] > target: q -= 1 + elif nums[i] + nums[k] + nums[p] + nums[q] < target: p += 1 + else: + res.append([nums[i], nums[k], nums[p], nums[q]]) + while p < q and nums[p] == nums[p + 1]: p += 1 + while p < q and nums[q] == nums[q - 1]: q -= 1 + p += 1 + q -= 1 + return res +``` +```python +# 哈希表法 class Solution(object): def fourSum(self, nums, target): """