双指针法:

首先将数组排序,然后有一层for循环,i从下表0的地方开始,同时定一个下表left 定义在i+1的位置上,定义下表right 在数组结尾的位置上。
如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下表就应该向左移动,这样才能让三数之和小一些。
如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left 就向右移动,才能让三数之和大一些,直到left与right相遇为止。

时间复杂度:O(n^2)。

代码(Java):

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> result = new ArrayList<>();Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {if (nums[i] > 0) {return result;}if (i > 0 && nums[i] == nums[i - 1]) {continue;}int left = i + 1;int right = nums.length - 1;while (right > left) {int sum = nums[i] + nums[left] + nums[right];if (sum > 0) {right--;} else if (sum < 0) {left++;} else {result.add(Arrays.asList(nums[i], nums[left], nums[right]));while (right > left && nums[right] == nums[right - 1]) right--;while (right > left && nums[left] == nums[left + 1]) left++;right--; left++;}}}return result;}
}

LeetCode-三数之和相关推荐

  1. LeetCode 三数之和 — 优化解法

    LeetCode 三数之和 - 改进解法 题目:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复 ...

  2. leetcode三数之和 M015

    leetcode M015 三数之和解法的本质就是暴力循环 方法一.纯暴力 原始的暴力循环N^3时间复杂度,代码如下: 很显然超时了 def threeSum(self, nums: List[int ...

  3. Leetcode 三数之和

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

  4. leetcode ---- 三数之和

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

  5. leetcode 三数之和 python_16.leetcode题目讲解(Python):最接近的三数之和

    题目如下: 题目 这道题可以用排一些特殊情况,减少计算量, 参考代码如下: class Solution: def threeSumClosest(self, nums, target): " ...

  6. 【LeetCode】两数之和、三数之和、四数之和系列

    文章目录 两数之和★ 三数之和★★ 四数之和★★ 四数相加Ⅱ★★ 最接近的三数之和★★ 此篇文章总结下力扣中的两数之和.三数之和.四数之和及一系列求数组中满足达到目标值的元组个数的问题,仔细阅读下面的 ...

  7. LeetCode实战:最接近的三数之和

    题目英文 Given an array nums of n integers and an integer target, find three integers in nums such that ...

  8. LeetCode实战:三数之和

    题目英文 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? ...

  9. LeetCode 15三数之和16最接近的三数之和

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

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

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

最新文章

  1. 被算法“监控”的打工人,这家公司 150 人被算法裁定为“不敬业”
  2. 用户信息填写web代码_基于web的自定义表单引擎
  3. 一切为了高清——金山云魔镜平台助推5G高清应用
  4. 博客园是个大金矿,管理员不挖掘有些可惜:给博客园提一些双赢的建议
  5. PHP中strtotime函数有范围吗,PHP中使用strtotime函数注意事项
  6. oracle查询并列,【问】oracle-查询各门课程的前2名和后2名
  7. Linux学习笔记-动态库的使用
  8. HDU4907小技巧
  9. PHP probuf详细步骤_【转】protobuffer php使用
  10. C++ Linked lists detail
  11. 微信小程序_阿里云api人脸识别
  12. LTE附着流程详解-UECapabilityInformation
  13. CSS+HTML实现倾斜导航条
  14. DeFi的:过去、现在和未来
  15. excel中的文本转换成数值
  16. 千亿市值今天解禁 美团点评“心里没谱”
  17. 解决J-LINk下载(sw接线方式)一次就不能下载了的问题
  18. Python爱因斯坦阶梯问题
  19. Java 设计模式——中介者模式(行为型设计模式)
  20. Java重构与TDD测试驱动开发实际案例一-陈勇-专题视频课程

热门文章

  1. 【重磅】人工智能长篇报告:1.5万字告诉你AI的应用究竟对人类社会经济有哪些影响...
  2. [转载].一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量
  3. 1.4、设置 SpringApplication 主启动类
  4. FreeRTOS源码分析与应用开发07:事件标志组
  5. 【编译工具】之Andorid pthread_cancel函数
  6. ip在线代理联合早报_我所资深代理人马俪雯线上参加”中国医药设备工程协会年会”...
  7. 实现拍照_实现“拍照自由”!vivo IFEA分离式镜头打破思维定势
  8. 学python必须得英语精通吗_“学习python必须精通的几个模块“
  9. 如何得到所有子对象_对象可能会迟到,但它永远不会缺席
  10. oracle异构迁移,异构数据库系统迁移到Oracle 工具 - Oracle SQL Developer