题目链接在这里:四数之和
这道题和前面的三数之和一模一样,只是需要枚举前两个数而已,需要注意一下前两个数的重复点的判断,并且不要忘记排序。
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)
未来是什么样,未来会发生什么,谁也不知道。
但是我知道,
起码从今天开始努力,
肯定比从明天开始努力,
要快一天实现梦想。
千里之行,始于足下! ——《那年那兔那些事儿》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理