当前位置: 首页 > news >正文

三数之和-Leetcode

leetcode链接:三数之和

题目描述

在这里插入图片描述

解题思路

主要要思考以下几个问题:

  • 如何选取三个元素?— 当前节点 + 左指针 + 右指针
  • 指针开始位置?— 左指针 = 当前节点位置 i + 1, 右指针 = n - 1
  • 如何保证不重复? — 先把数组排序,再去重
  • 如何控制指针移动? — 排序后, 左指针是最小值,右指针是最大值,根据当前三数之和的状态移动左右指针
class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);int n = nums.length;List<List<Integer>> res = new ArrayList<>();for(int i = 0; i < nums.length; i++) {int l = i + 1, r = n - 1;if(i > 0 && nums[i] == nums[i-1]) continue; // 去重while(l < r) {int sum = nums[i] + nums[l] + nums[r];if(sum < 0) l++;else if(sum > 0) r--;else {res.add(Arrays.asList(nums[i], nums[l], nums[r]));l++;r--;}}}return res;}
}

通过部分测试用例
在这里插入图片描述
这里去重要注意两个指针移动过程中也要去重!
更正代码:

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入理解 Vuex:Vue.js 应用的状态管理
  • 《最新出炉》系列小成篇-Python+Playwright自动化测试-66 - 等待元素至指定状态(出现、移除、显示和隐藏)
  • mysql数据库:SQL语言基础和基本查询
  • 黑马Java零基础视频教程精华部分_16_递归算法
  • QT下载与安装
  • 第25课 Scratch入门篇:火箭升空
  • 2024下半年国际学术会议一览表
  • 学懂C++ (十四):高级教程——C++ 动态内存管理(new和delete)详解
  • Cmake基础教程--第1章:初识cmake
  • python实现返回指定下标位置的 斐波那契数列[1,1,2,3,5,8,13,21,34....n] 数值
  • 基于Springboot + Vue的宿舍管理系统
  • 思特威正式发布子品牌飞凌微,首发产品定位智驾视觉处理
  • chromedriver版本下载地址汇总chromedriver所有版本下载地址汇总国内源下载
  • 在 Mac 上恢复永久删除的文件:分步指南
  • 谷粒商城实战笔记-117-全文检索-ElasticSearch-进阶-term查询
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【面试系列】之二:关于js原型
  • 11111111
  • CentOS6 编译安装 redis-3.2.3
  • mongodb--安装和初步使用教程
  • PV统计优化设计
  • Redis学习笔记 - pipline(流水线、管道)
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 构造函数(constructor)与原型链(prototype)关系
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一道闭包题引发的思考
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​补​充​经​纬​恒​润​一​面​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 数据结构
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (c语言)strcpy函数用法
  • (LeetCode C++)盛最多水的容器
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (八)c52学习之旅-中断实验
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (南京观海微电子)——I3C协议介绍
  • (四)js前端开发中设计模式之工厂方法模式
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)一些感悟
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core WebAPI中封装Swagger配置
  • .NET 读取 JSON格式的数据
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [100天算法】-x 的平方根(day 61)