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

15.三数之和(LeetCode)java

个人理解:

1.使用双指针做法,首先对数组进行排序

        第一重for循环控制第一个数,对数组进行遍历。双指针初始化为left=i+1, rigth=nums.length-1。然后使用while循环移动双指针寻找合适的数。因为返回的是数,不是下标,数不能重复,所以需要去重。对于第一重for循环,当i大于0的时候,要判断是否和前一个数相同,如果相同,则跳过当前数进行去重。

2.双指针移动

当nums[i]+nums[left]+nums[right]>0时,说明大了,最右边的right指针需要减减操作(right--)

当nums[i]+nums[left]+nums[right]<0时,说明小了,最左边的left指针需要加加操作(left++)

当nums[i]+nums[left]+nums[right]==0时,开始收集结果。

3.结果收集

收集完结果后,要移动双指针,这时候也要对双指针进行去重。

指针去重操作:

        对于left指针,如果nums[left]==nums[left+1],说明下一位重复,那么left要持续++;

        对于right指针,如果nums[right]==nums[right-1],说明下一位重复,那么right要持续--;

以上两种情况都要主要前提条件,即left<right

无论以上两种情况是否执行,都需要left++和right--更新双指针。

最后将结果收集 res.add(Arrays.asList(nums[i],nums[left],nums[right]))

res是List<List<Integer>>类型,Arrays.asList()是将一组元素变为List

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res=new ArrayList<>();Arrays.sort(nums);  //先排序for(int i =0;i<nums.length;i++){if(nums[i]>0)   //如果第一个元素大于0,直接跳出循环break ;if(i>0&&nums[i]==nums[i-1])  //对于第一个元素,去重continue;int left=i+1;   // 双指针int right=nums.length-1;// 指针开始移动while(left<right){if(nums[i]+nums[left]+nums[right]>0){  // 太大了,右指针移动right--;}else if(nums[i]+nums[left]+nums[right]<0){  // 太小了,左指针移动left++;}else{//收集结果res.add(Arrays.asList(nums[i],nums[left],nums[right]));// 开始对指针去重,也就是对第二、第三个元素去重while(left<right&&nums[right]==nums[right-1])right--;while(left<right&&nums[left]==nums[left+1])left++;// 移动双指针left++;right--;}}}return res; }
}

相关文章:

  • 数据集 | 柑橘果目标检测数据集
  • 云原生--CNCF-1-云原生计算基金会介绍(云原生生态的发展目标和未来)
  • Oracle--SQL事务操作与管理流程
  • Vue2-样式相关
  • 【高并发内存池】从零到一的项目之高并发内存池整体框架设计及thread cache设计
  • 基于TCP的协议
  • 深度学习--卷积神经网络保存最优模型
  • mcp 客户端sse远程调用服务端与本地大模型集成实例
  • Python 基础
  • ABAQUS多晶体材料断裂模型
  • 百度搜索 API 相比于爬虫的效率提升、价格及如何注册使用
  • Kubernetes Docker 部署达梦8数据库
  • 【EasyPan】文件上传、文件秒传、文件转码、文件合并、异步转码、视频切割分析
  • MySQL索引知识点(笔记)
  • 《大模型+Agent 企业应用实践》的大纲
  • 网络基础概念(下)
  • 驱动开发硬核特训 · Day 17:深入掌握中断机制与驱动开发中的应用实战
  • MYSQL的binlog
  • 《棒球规则》全明星比赛规则·棒球1号位
  • 爱普生FC1610BN晶体在健康监测手环的应用
  • 驯服象牙塔:美国政府对大学的战争是一场善恶对抗吗
  • 十三届全国政协经济委员会副主任张效廉严重违纪违法被开除党籍
  • 深一度|坚守17年,这件事姚明就算赔钱也在继续做
  • 2025年度沪惠保参保今开启:保费不变,国内特药种类扩增
  • 石中英已任新成立的清华大学教育学院院长
  • 上海明天有雷雨、大风,下周气温在春日舒适区间