可惜没如果=_=
时光的河入海流
posts - 393,comments - 0,views - 57889

题目链接在这里:四数之和

这道题和前面的三数之和一模一样,只是需要枚举前两个数而已,需要注意一下前两个数的重复点的判断,并且不要忘记排序。

from ast import List
class Solution:
def fourSum(self, nums: List, target: int):
n = len(nums)
if n < 4 or not nums:
return []
ans = []
nums.sort()
for i in range(0, n-3):
if not i==0 and nums[i]==nums[i-1]:
continue
if nums[i]+nums[i+1]+nums[i+2]+nums[i+3] > target:
break
if nums[i]+nums[n-1]+nums[n-2]+nums[n-3] < target:
continue
for j in range(i+1, n-2):
# print("i:",i,"j:",j)
if not j==i+1 and nums[j]==nums[j-1]:
continue
L = j+1
R = n-1
while L < R:
if nums[i]+nums[j]+nums[L]+nums[R]==target:
ans.append([nums[i],nums[j],nums[L],nums[R]])
while L<R and nums[L]==nums[L+1]:
L+=1
while L<R and nums[R]==nums[R-1]:
R-=1
L+=1
R-=1
elif nums[i]+nums[j]+nums[L]+nums[R]<target:
L+=1
else:
R-=1
return ans
if __name__=="__main__":
nums = [2,2,2,2,2]
target = 8
ans = Solution().fourSum(nums=nums,target=target)
print(ans)
posted on   珍珠鸟  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示