本文主要介绍LeetCode如何解决三个数之和的问题。很详细,有一定的参考价值。感兴趣的朋友一定要看!
一个
标题描述
给定一个整数数组nums,判断nums中是否有A、B、C三个元素,使a b c=0。如果没有答案,返回[];如果有,则返回所有符合条件且不重复的答案。例如,输入[-1,0,1,2,-1,4]返回[[-1,0,1],[-1,1,2]],例如,输入[-3,3]返回[]。
2
问题解决
这个问题需要两个预测:1。当数组长度小于3时,直接输出【】;2.首先对数组进行排序。如果当前号码与前一个号码相同,结果将是相同的。跳过它。思路一:哈希表
在这个问题中,我们需要找到满足条件的三个要素。当第一个元素A固定后,问题就会转化为求B和C之和为-a的问题,也就是和LeetCode的刷题DAY 8中的问题一致:两个数之和,所以也可以用哈希表来解决。
classsolution : def throum(self,nums : List[int])-List[List[int]]: iflen(nums)3: return[]nums=sorted(nums)a=List()for iirange(len(nums)-2): if 0 and nums[I]==nums[I-1]: continueh _ map={ } target=-nums[I]for Jin range(I,len(nums)
思路二:双手
数组排序,第一个元素A固定时,问题和LeetCode刷题DAY 9:两个数之和II一样,可以用双指针法求解。
classsolution : def 3pum(self,nums : List[int])-List[List[int]]: iflen(nums)3: return[]nums=sorted(nums)a=List()for iirange(len(nums)-2): ifi 0和nums[I]==nums[I-1]: continuex=I 1y=len(nums)-1 target=-nums[I]whilex
以上就是《LeetCode如何求解三个数之和》一文的全部内容。感谢阅读!希望分享的内容对大家有所帮助。更多相关知识,请关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146806.html