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

三数之和 Java

class Solution {public static List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> list = new ArrayList();int n = nums.length;Arrays.sort(nums);for (int i = 0; i < n - 2; i++) { // 第一个数索引if (nums[i] > 0) break; // 第一个数都大于0了,那么就不可能与后面两个数的和为0if (i > 0 && nums[i] == nums[i - 1]) continue; // 第一个数去重int l = i + 1; // 第二个数索引(左指针)int r = n - 1; // 第三个数索引(右指针)while (l < r) {int sum = nums[i] + nums[l] + nums[r];if (sum == 0) {list.add(Arrays.asList(nums[i], nums[l], nums[r])); // 加入结果集while (l < r && nums[l] == nums[l + 1]) l++; // 第二个数去重while (l < r && nums[r] == nums[r - 1]) r--; // 第三个数去重// 别忘了移动指针l++; r--;} else if (sum > 0) {r--; // 和大于0,则左移右指针使和变小} else {l++; // 和小于0,则右移左指针使和变大}}}return list;}
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

http://www.dtcms.com/a/324739.html

相关文章:

  • 人工智能系列(7)人工神经网络中的无监督学习
  • C语言-数组和指针练习题合集(一)
  • C语言深度剖析
  • 网页五子棋测试
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-关于我们
  • 2025最新免费的大模型和免费的大模型API有哪些?(202508更新)
  • 秋招春招实习百度笔试百度管培生笔试题库百度非技术岗笔试|笔试解析和攻略|题库分享
  • 冒泡排序实现以及优化
  • WebSocket集群方案解析与实现
  • My APK 安卓版:高效管理手机应用的工具软件
  • windows的cmd命令【持续更新】
  • Linux应用软件编程---文件操作1(fopen、fclose、fgetc/fputc、fgets/fputs)
  • 什么是浏览器标识?
  • 【Docker进阶实战】从多容器编排到集群部署
  • TSF应用开发与运维部署
  • 个人笔记Mybatis2
  • 医学统计(现况调查的统计分析策略1)
  • 电脑使用“碎片整理”程序的作用
  • 基于ECharts的智慧社区数据可视化
  • 【npm、yarn、pnpm】特点对比,按需选择
  • Java设计模式之开闭原则介绍与说明
  • 【RocketMQ 生产者和消费者】- ConsumeMessageOrderlyService 顺序消费消息
  • Vue.js设计于实现 - 概览(二)
  • 跑酷小游戏2.0
  • C语言(长期更新)第10讲:操作符详解(二)
  • 麻溜启动Oracle实例demo
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • 基于Spring Boot和WebSocket的实时聊天系统
  • Openlayers基础教程|从前端框架到GIS开发系列课程(21)geojson实现线要素和区要素
  • git merge的原理和过程,merge conflict产生的原因、处理的逻辑