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

【leetcode】15. 三数之和(medium)

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

这题真的好难,试了好多方法,最后参考了代码随想录的解法:

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();if(nums.length<3) return res;// 排序,方便操作Arrays.sort(nums);for(int i=0;i<nums.length-2;i++){// 剪枝:已经排过序了,所以如果第一个值大于0,没有可行解if(nums[i]>0) return res;// 剪枝:如果当前元素和前一个元素一样,跳过即可,否则会有重复解if((i>0) && (nums[i-1]==nums[i])) continue;int left = i+1;int right = nums.length-1;while(left < right){// int sum = nums[i]+nums[left]+nums[right];if(nums[i]+nums[left]+nums[right] == 0){res.add(Arrays.asList(nums[i], nums[left], nums[right]));while(left<right && nums[left]==nums[left+1])  //去重left++;while(left<right && nums[right]==nums[right-1])  //去重right--;left++;right--;}else if(nums[i]+nums[left]+nums[right] < 0)left++;else if(nums[i]+nums[left]+nums[right] > 0)right--;}}return res;}
}
http://www.lryc.cn/news/119158.html

相关文章:

  • 【css】属性选择器
  • Redis_概述
  • 【从零学习python 】16. Python字符串的format方法(一)
  • python re 模块 正则表达式
  • c#设计模式-创建型模式 之 单例模式
  • K-01BFS(2023河南萌新联赛第(五)场:郑州轻工业大学)
  • CSP复习每日一题(四)
  • dubbo之整合SpringBoot
  • UE 5 GAS 在项目中处理AttributeSet相关
  • JDBC数据库连接
  • gitee分支合并
  • Python小白入门:文件、异常处理和json格式存储数据
  • 16bit、8 通道、500kSPS、 SAR 型 ADC——MS5188N
  • Chapter 12: Regular expressions | Python for Everybody 讲义笔记_En
  • Android javaMail mergeDebugJavaResource FAILED解决
  • 【ArcGIS Pro二次开发】(57):地图系列
  • 秋招打卡015(20230811)
  • 如何使用Word转PDF转换器在线工具?在线Word转PDF使用方法
  • 自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅰ]
  • Camunda 7.x 系列【7】Spring Boot 集成 Camunda 7.19
  • 24华东交通软件工程837考研题库
  • nginx 以及nginx优化
  • cesium学习记录04-坐标系
  • P5737 【深基7.例3】闰年展示
  • Nacos的安装使用教程Linux
  • 数据结构-学习
  • 【MFC】05.MFC六大机制:程序启动机制-笔记
  • Von Maur, Inc EDI 需求分析
  • [深度学习入门]PyTorch深度学习[Numpy基础](上)
  • Excel vost 实现照光灯效果