leetcode 第15题 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。

// 示例
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
// 双指针 + 排序
// 主要难点在于考虑什么时候该去重
// 时间复杂度 O(n^2)
function threeSum(nums) {const lenght = nums.length; // 数组长度let result = [] // 返回结果的容器nums.sort((a, b) => a - b) // 双指针 + 排序的 排序 这一步if (nums === null || lenght < 3) { // 特殊情况的处理return []}for (let i = 0; i < lenght; i++) {// 需要去重 两个数相同就没必要重复之前的循环了if (i > 0 && nums[i] === nums[i - 1]) { continue}// i都大于0了,因为我们的数组是排过序的,// i后面的数字就肯定都大于0是吧,可以直接返回了if (nums[i] > 0) { return result}let l = i + 1, // 左指针 从i下一位开始r = lenght - 1; // 右指针 从最后一位开始;while (l < r) { // 循环条件const sum = nums[i] + nums[l] + nums[r];if (sum === 0) {result.push([nums[i], nums[l], nums[r]])while (l < r && nums[l] === nums[l + 1]) {l++}l++while (l < r && nums[r] === nums[r - 1]) {r--}r--} else if (sum < 0) { // 加起来的数小于target 说明最小的数太小了l++} else { // 加起来的数大于target, 说明最大的数太大了r--}}}return result
}

leetcode系列--15.三数之和相关推荐

  1. Leetcode:NO.15 三数之和 夹逼

    题解 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复 ...

  2. leetcode No.15-16 三数之和相关问题

    leetcode 15. 三数之和 题目 链接:https://leetcode-cn.com/problems/3sum 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 ...

  3. Leetcode python《热题 HOT 100》15. 三数之和

    Leetcode python 之 <热题 HOT 100>:https://leetcode-cn.com/problemset/hot-100/ 15. 三数之和 给定一个包含 n 个 ...

  4. LeetCode 15. 三数之和(3Sum)

    15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...

  5. [双指针|模拟] leetcode 15 三数之和

    [双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...

  6. 代码随想录算法训练营第07天 | LeetCode 454.四数相加2,383. 赎金信,15. 三数之和,18. 四数之和,总结

    LeetCode [454. 四数相加 II] 题目:给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足 ...

  7. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  8. Java实现 LeetCode 15 三数之和

    15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...

  9. 【LeetCode 算法】15.三数之和

    15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...

最新文章

  1. Swift JSON转模型Xcode插件
  2. python程序实例教程基础-编程小案例
  3. Java中使用Jedis连接Redis对List进行操作的常用命令
  4. PIP 安装 numpy
  5. 模式识别中的特征向量和矩阵的特征向量有什么关系
  6. java byte缓存_java-如何使用带byte []键的番石榴缓存?
  7. 计算机过去和现在的变化英语作文,自己过去和现在的变化英语作文带翻译
  8. C++重载运算符的规则详解
  9. 锐捷客户端linux安装,锐捷smp客户端安装(linux)
  10. 三面,字节跳动电商Java面经(已过)
  11. 计算机常见网络故障,网络故障有哪些?常见网络故障处理方法
  12. 微信能上但浏览器无法上网
  13. 中南大学计算机学院复试差额录取比例,中南大学在职研究生复试差额比例大概是多少...
  14. 魅族20和魅族20pro的区别 魅族20和20pro参数对比
  15. java中的解耦_java-了解如何解耦
  16. window10怎么卸载php,window10怎么卸载软件以及清空插件
  17. Scala样例类(case class)
  18. 冒烟测试(smoke test)、可用性测试(sanity test)和回归测试(regression test)
  19. Kony Development Cloud
  20. 隐马尔科夫模型(HMM)浅见

热门文章

  1. 给我推荐5款桌面整理软件
  2. 公司对不实舆情该如何进行处置和公关?
  3. 打印log4j日志 : 超过一定大小新建日志文件 每天新建一个日志文件
  4. CSS 注释影响问题
  5. MayaBatch.py 解读
  6. Scala for the Impatient课后练习(第1章 The Basics)
  7. 怎样从Mac删除APFS卷?
  8. 基于Multisim声光控路灯控制系统-设计资料
  9. 神雕侠侣2显示不了服务器,神雕侠侣2游戏进不去怎么办_游戏进不去解决方法推荐...
  10. Scrum板与Kanban如何抉择?pqtofaaae板与按照bdyefr