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

【双指针- LeetCode】15.三数之和

15. 三数之和 - 力扣(LeetCode)

题解:

官方给的解决方法有点小麻烦,这里在评论区找到一个比较友好的双指针模板。

相对于传统的双指针,这里不同的是,在不符合条件时,两边都需要移动。

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(), nums.end());vector<vector<int>>res;int n = nums.size();for(int i = 0; i < n; i ++){// 跳过重复元素if(i > 0 && nums[i] == nums[i-1]) continue;int l = i + 1, r = n - 1;while(l<r){int sum = nums[l] + nums[r] + nums[i];if(sum == 0){res.push_back({nums[i], nums[l], nums[r]});l ++;r --;// 跳过重复元素while(l < r && nums[l] == nums[l - 1]) l++;while(l < r && nums[r] == nums[r + 1]) r--;}else if(sum > 0) { r--; } // 和太大,需要小一些else {l++;}}}return res;}
};

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

相关文章:

  • CPLD和FPGA的区别
  • LeetCode 560. 和为 K 的子数组
  • Linux827 测试
  • Linux MDIO 深入分析
  • 电子电气架构 --- 软件项目复杂性的驾驭思路
  • [Sync_ai_vid] UNet模型 | 音频特征提取器(Whisper)
  • FPGA实现Aurora 64B66B图像视频传输,基于GTY高速收发器,提供2套工程源码和技术支持
  • 第三阶段数据库-10:存储过程,事务,异常,视图,自定义函数,触发器,N关键字
  • synchronized和Lock有什么区别?
  • Vue3》》基础
  • Ubuntu 20.04.6交叉编译得到Ubuntu 16.04.6的可执行文件
  • 5GNR CSI反馈 TypeI码本
  • Shader开发(十七)着色器中的纹理采样与渲染
  • OpenCV4.X库功能全解---个人笔记
  • 基于51单片机温度控制系统报警器恒温箱水温设计
  • Oh My Zsh + Tabby 终端配置指南
  • CB1-2-基础启航
  • 工业 DCS 全面科普:从入门到 AI 赋能的未来
  • 大视码垛机器人:以技术优势撬动工业码垛升级
  • 【datawhale组队学习】RAG技术 -TASK05 向量数据库实践(第三章3、4节)
  • Scala面试题及详细答案100道(21-30)-- 面向对象编程
  • 丝杆支撑座如何助力自动化设备精准定位?
  • 对接连连支付(四)-- 收款查询
  • 在Python中处理GDB、MDB和Shapefile文件转换
  • 滥用Mybatis一级缓存引发OOM问题
  • 如何使用asyncio库
  • 汽车电气系统的发展演进为测试带来了哪些影响?
  • LangChain4J-(3)-模型参数配置
  • AI生成音乐模型发展现状与前景
  • prettier、eslint、stylelint在项目中使用