首页 > 其他分享 >LeetCode 15. 三数之和

LeetCode 15. 三数之和

时间:2023-05-07 21:14:34浏览次数:41  
标签:15 nums int 三数 && res LeetCode

题目链接:LeetCode 15. 三数之和

题意:

在给定的数组中,找出三个数(三个数不重复)使得他们相加的和为 0 ,同时答案中不能有重复的答案

解题思路:

完整代码如下:


//双指针做法首先要有序

// 解法一 最优解,双指针 + 排序
func threeSum(nums []int) [][]int {
    var res [][]int
    sort.Ints(nums) //对nums数组进行排序
    //认为 i < j < k
for i:=0;i<len(nums);i++{   //遍历 i
    if i>0 && nums[i] == nums[i-1]{ //去重
        continue
    }
    for j,k:=i+1,len(nums)-1 ;j < k ; j++{   //同时遍历 j 和 k  结束条件 j,k 相遇
        if j > i+1 && nums[j] == nums[j-1]{ //同样 去重
        continue
        }
        for j < k-1 && nums[i] + nums[j] +nums[k-1] >=0 {  
            //目的是为了找到nums[i] + nums[j] +nums[k] > 0 的最小值
            k--
        }
        if nums[i] + nums[j] +nums[k]== 0 {
                res = append(res, []int{nums[i], nums[j], nums[k]})
        }
    }
}
    return res
}

标签:15,nums,int,三数,&&,res,LeetCode
From: https://www.cnblogs.com/lxing-go/p/17380138.html

相关文章

  • LeetCode 18. 四数之和
    题目链接:LeetCode18.四数之和题意:本题思路与LeetCode15.三数之和思路完全一样,只是多加了一层for循环解题思路:完整代码如下:funcfourSum(nums[]int,targetint)[][]int{//四元组,四个元素都不相同,并且结果要去重varres[][]intsort.Ints(nums)......
  • LeetCode 383. 赎金信
    题目链接:LeetCode383.赎金信题意:给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。解题思路:首先利用map记录magazine中所有出现的字母,key是单个字母,value是该字母出现的次数,然后遍历ransomNote,检查当前字母在magazine中是......
  • 文心一言 VS chatgpt (15)-- 算法导论3.2 4~5题
    四、函数$\lceil\lgn\rceil!$多项式有界吗?函数$\lceil\lg\lgn\rceil!$多项式有界吗?文心一言:chatgpt:对于第一个问题,函数$\lceil\lgn\rceil!$是阶乘的形式,可以证明它是超多项式增长的,因此不是多项式有界的。对于第二个问题,函数$\lceil\lg\lgn\rceil!$......
  • 文心一言 VS chatgpt (15)-- 算法导论3.2 4~5题
    四、函数多项式有界吗?函数多项式有界吗?文心一言:chatgpt:对于第一个问题,函数是阶乘的形式,可以证明它是超多项式增长的,因此不是多项式有界的。对于第二个问题,函数的增长速度比慢很多。虽然不是多项式,但是它是多项式有界的,也就是说,存在一个多项式和常数,使得当足够大时......
  • LeetCode 516. 最长回文子序列
    classSolution{public:intf[1010][1010];//f[i][j]表示s[i~j]之间的最长序列intINF=0x3f3f3f3f;intlongestPalindromeSubseq(strings){intn=s.size();s=''+s;for(intlen=1;len<=n;len++)for(inti=1;i......
  • CF1591F - Non-equal Neighbours
    Mysolution首先,我们考虑最暴力的\(dp\),设\(dp_{i,j}\)表示当前处理到第\(i\)位,目前序列尾部是\(j\)的方案数。这个\(dp\)的转移是很容易的。\(dp_{i,j}=\sum_{k=1}^{a_{i-1}}[k\neqj]dp_{i-1,k}\)。但是复杂度也是很寄的,是\(O(na)\)。然后我们考虑优化这个暴力,我们......
  • LeetCode 202. 快乐数
    题目链接:LeetCode202.快乐数题意:本题是让我们判断一个数是否是快乐数,题干中给出了快乐数的条件。解题思路:方法一:在题干中指出,如果一个数不是快乐数的话,那么它的各个位上的数字的平方和会无限循环,始终变不到1,也就是说求和的过程中,sum会重复出现,因此我们抓住这一关键特征,判......
  • (数据科学学习手札152)geopandas 0.13版本更新内容一览
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介大家好我是费老师,昨天晚上geopandas正式发布了其0.13.0版本,距离其上一个版本更新已经过去了5个多月,在这一次更新中除了日常的bug修复以外,还为我们带来了多项新功能,今天的文章......
  • LeetCode 349. 两个数组的交集
    题目链接:LeetCode349.两个数组的交集题意:本题题意是让我们找出两个数组中的交集,注意交集中不能出现重复元素解题思路:思路比较常规,先遍历数组num1,对于每个首次出现的数字,对应位置上的数值+1,再遍历数组num2,判断当前数字是否在num1中出现,如果出现,就加入到结果集中完整代码如......
  • LeetCode 242. 有效的字母异位词
    题目链接:LeetCode242.有效的字母异位词题意:本题是要判断两个字符串s和t,是否是字母异位词,所谓字母异位次就是如果s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。解题思路:首先我们很容易想到,最简单的思路就是先遍历一遍s字符串,统计出每个字母出现的次数......