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

LeetCode【15】三数之和

题目:
在这里插入图片描述
解析:
参考:https://zhuanlan.zhihu.com/p/111715985

代码:

public static List<List<Integer>> threeSum(int[] nums) {// 先排序Arrays.sort(nums);List<List<Integer>> result = new ArrayList<>();for (int i = 0; i < nums.length - 2; i++) {   //注意这里优化,少算两个数,因为是三数之和int left = i + 1;int right = nums.length - 1;if (i > 0 && nums[i] == nums[i - 1]) {   // 注意,这里容易产生重复计算 -1、-1、0、1,结果里将产生两遍 -1、0、1,题目中明确不可以包含重复的三元组continue;}while (left < right) {if (nums[left] + nums[right] == (0 - nums[i])) {result.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--;}// 还有可能凑成0,如 -4,-2,2,4left++;right--;} else if (nums[left] + nums[right] > (0 - nums[i])) {right--;} else {left++;}}}return result;
}
http://www.lryc.cn/news/190146.html

相关文章:

  • Gossip协议是什么
  • 【java学习】this关键字(27)
  • 27、元组
  • 1km分辨率逐月降雨量和最高温度数据集(1901-2022)--数据处理
  • docker入门加实战—docker常见命令
  • 【C/C++】使用 g++ 编译器编译 C++ 程序的完全指南
  • ARM中断实验
  • Vue条件渲染
  • k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装
  • VRRP 虚拟路由器冗余协议的解析和配置
  • 旅游网站HTML
  • Unity - Normal mapping - Reoriented normal mapping - 重定向法线、混合法线
  • CSS 常用样式background背景属性
  • Java开发利器,让你事半功倍!
  • Redis面临的挑战
  • 10月12日
  • Windows 下 Qt 可执行程序添加默认管理员权限启动(QMAKE、MinGW MSVC)
  • 深度思考面试常考sql题
  • 使用springboot服务端远程调试? 试试HTTP实现服务监听
  • CSS图文悬停翻转效果完整源码附注释
  • MQTT C库下载
  • android U广播详解(一)
  • input标签的23种type类型
  • 分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测
  • 解决echarts配置滚动(dataZoom)后导出图片数据不全问题
  • 【vue3+ts】项目初始化
  • c++视觉图像----扩充边界
  • 邮政编码,格式校验:@ZipCode(自定义注解)
  • Appium自动化测试框架:关键字驱动+数据驱动
  • 简单多状态dp【动态规划】