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

leetcode15.三数之和题解:逻辑清晰带你分析

介绍

在这里插入图片描述
题源

分析

1.双指针+固定一个数

首先明白一点,我们有三个数,我们想使用双指针,那就必须固定一个数。

2.二分

本题还涉及二分,双指针经常和二分结合使用(二分本质就是双指针,仔细思考这思考这句话),所以我们要在一开始先排序。

3.去重

题目要求答案不可包含重复的三元组,那么就必须考虑去重。
又分两种情况:
1.对固定的数来说,用当前数和前一个数比较,相同直接跳过本次了。
2.对后两个数,只需要考虑当双指针找到了一次对应目标后,把可能重复的数字跳过去。

明确了思路,代码就非常好写了。

cpp代码

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {//一是固定数+双指针,二是二分,三是去重  vector<vector<int>> res;if(nums.size()<3) return res;sort(nums.begin(),nums.end());for(int i=0;i<nums.size();i++){if(nums[i]>0) break;if(i>0&&nums[i]==nums[i-1]) continue;int j=i+1,k=nums.size()-1;while(j<k){if(nums[i]+nums[j]+nums[k]==0) {res.push_back({nums[i],nums[j],nums[k]});while(j<k && nums[j]==nums[j+1]) j++;while(j<k && nums[k]==nums[k-1]) k--;j++;k--;}else if(nums[i]+nums[j]+nums[k]<0){j++;}else{k--;}}}return res;}
};

流程

指针相遇
未相遇
和小
和大
开始
输入数组
数组排序
固定第一个数
双指针查找
找到解?
保存结果
继续查找
固定下一数
判断和大小
左指针右移
右指针左移
http://www.xdnf.cn/news/1145629.html

相关文章:

  • RPG60.生成可拾取物品
  • camera2 outputbuffer的流转过程
  • 2025外卖江湖:巨头争霸,谁主沉浮?
  • python网络爬虫(第三章/共三章:驱动浏览器窗口界面,网页元素定位,模拟用户交互(输入操作、点击操作、文件上传),浏览器窗口切换,循环爬取存储)
  • 某邮生活旋转验证码逆向
  • nastools继任者?极空间部署影视自动化订阅系统『MediaMaster』
  • Linux下使用原始socket收发数据包
  • LatentSync: 一键自动生成对嘴型的视频
  • 域名WHOIS信息查询免费API使用指南
  • 笔试——Day12
  • Java Map 集合详解:从基础语法到实战应用,彻底掌握键值对数据结构
  • 爬虫小知识(二)网页进行交互
  • 持续同调文章阅读(四)
  • 二刷 黑马点评 附近商户
  • Diffusion-VLA 中的 Reasoning Token 注入机制解析:语言推理如何控制扩散模型?
  • 深入解析文本分类技术全景:从特征提取到深度学习架构
  • Python 之地址编码识别
  • 《Web安全之深度学习实战》读书笔记总结
  • 去中心化交易所(DEX)深度解析:解码行业头部项目
  • 堆的实现,堆排序,咕咕咕
  • 【RK3576】【Android14】开发板概述
  • Node.js链接MySql
  • 数据结构-3(双向链表、循环链表、栈、队列)
  • 进阶数据结构:红黑树
  • uniapp 动态控制横屏(APP 端)
  • spring boot 实战之分布式锁
  • linux 的list_for_each_entry
  • 数字化转型:概念性名词浅谈(第三十一讲)
  • 怎么判断一个对象是不是vue的实例
  • STM32-CAN