力扣hot100——三数之和(双指针)
题目:三数之和
排序 + 双指针
本题的难点在于如何去除重复解。
算法流程:
1、特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 []。
2、对数组进行排序。
3、遍历排序后数组:
(1)若 nums[i]>0:因为已经排序好,所以后面不可能有三个数加和等于 0,直接返回结果。
(2)对于重复元素:跳过,避免出现重复解
(3)令左指针 L=i+1,右指针 R=n−1,当 L<R 时,执行循环:
当 nums[i]+nums[L]+nums[R]==0,执行循环,判断左界和右界是否和下一位置重复,去除重复解。并同时将 L,R 移到下一位置,寻找新的解
若和大于 0,说明 nums[R] 太大,R 左移
若和小于 0,说明 nums[L] 太小,L 右移作者:吴彦祖
链接:https://leetcode.cn/problems/3sum/solutions/39722/pai-xu-shuang-zhi-zhen-zhu-xing-jie-shi-python3-by/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
代码实现:
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {//特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回空数组if(nums.size()<3){return vector<vector<int>>();}int l,r;vector<vector<int>> result; //对数组进行排序。sort(nums.begin(), nums.end());for (int i = 0; i< nums.size(); i++){l=i+1;r = nums.size()-1;//若 nums[i]>0:因为已经排序好,所以后面不可能有三个数加和等于 0,直接返回结果。if (nums[i]>0){return result;}//难点:对于重复元素:跳过,避免出现重复解if (i>0 && nums[i] == nums[i-1]){continue;}while(r>l){if ((nums[i]+nums[l]+nums[r]) > 0){r--;}else if((nums[i]+nums[l]+nums[r]) < 0){l++;}else{vector<int> group;group.push_back(nums[i]);group.push_back(nums[l]);group.push_back(nums[r]);result.push_back(group);//去重第三个元素while(r>l && nums[r]==nums[r-1])r--;//去重第二个元素while(r>l && nums[l]==nums[l+1])l++; r--;l++;}} }return result;}
};
相关文章:
力扣hot100——三数之和(双指针)
题目:三数之和 排序 双指针 本题的难点在于如何去除重复解。 算法流程: 1、特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 []。 2、对数组进行排序。 3、遍历排序后数组: (…...
技术分享 | MySQL内存使用率高问题排查
本文为墨天轮数据库管理服务团队第51期技术分享,内容原创,如需转载请联系小墨(VX:modb666)并注明来源。 一、问题现象 问题实例mysql进程实际内存使用率过高 二、问题排查 2.1 参数检查 mysql版本 :8.0.…...
分享一个精灵图生成和拆分的实现
概述 精灵图(Sprite)是一种将多个小图像合并到单个图像文件中的技术,广泛应用于网页开发、游戏开发和UI设计中。在MapboxGL中,跟之配套的还有一个json文件用来记录图标的大小和位置。本文分享基于Node和sharp库实现精灵图的合并与…...
AI日报 - 2025年3月21日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI成立安全委员会,加速AGI治理框架构建 ▎💼 商业动向 | 微软发布医疗大模型DAX Copilot 3.0,覆盖全球临床场景 ▎📜 政策追踪 | 中国发布…...
MongoDB 配合python使用的入门教程
MongoDB 入门教程 1. 安装 MongoDB 首先,你需要在你的机器上安装MongoDB。你可以从 MongoDB官网 下载并安装 Community 版本。安装完成后,启动MongoDB服务。 # 在Linux/Mac上启动MongoDB mongod# 在Windows上,你可以通过Windows服务启动Mo…...
函数:形参和实参
在函数的使用过程中分为实参和形参,实参是主函数实际调用的值而形参则是给实参调用的值,如果函数没被调用则函式不会向内存申请空间,先用一段代码演示 形参: int test(int x ,int y ) {int z 0;z x y;return z; } 为何会叫做…...
【C#知识点详解】ExcelDataReader介绍
今天来给大家介绍一下ExcelDataReader,ExcelDataReader是一个轻量级的可快速读取Excel文件中数据的工具。话不多说直接开始。 ExcelDataReader简介 ExcelDataReader支持.xlsx、.xlsb、.xls、.csv格式文件的读取,版本基本在2007及以上版本,支…...
Vala编程语言教程-控制结构
控制结构 while (a > b) { a--; } 会重复递减a,每次迭代前检查a是否大于b。 do { a--; } while (a > b); 会重复递减a,每次迭代后检查a是否大于b。 for (int a 0; a < 10; a) { stdout.printf("%d\n", a); } 会先将a初始化为0…...
《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现
前言 相信大家在slam学习中,一定会遇到slam系统的性能评估问题。虽然有EVO这样的开源评估工具,我们也需要自己了解系统生成的trajectory.txt的含义,方便我们更好的理解相机的运行跟踪过程。 项目配置如下: 数据解读: …...
服务的拆分数据的迁移
参考: 数据迁移调研...
在类Unix终端中如何实现快速进入新建目录
🚪 前言 相信喜欢使用终端工作的小伙伴或多或少会被一个小地方给膈应,那就是每次想要新建一个文件夹并且进入之,那么就需要两条指令:mkdir DIR和cd DIR,有些人可能要杠了,我一条指令也能,mkdir…...
01分数规划,二分法,题目练习
一、01分数规划 1.1 01分数规划 01分数规划用来求一个分式的极值。模型如下: 给出 a i a_i ai 和 b i b_i bi,求一组 w i ∈ { 0 , 1 } w_i \in \{ 0, 1 \} wi∈{0,1}最小化或最大化 ∑ i 1 n a i w i ∑ i 1 n b i w i \frac{\sum_{i1…...
TG电报群管理机器人定制开发的重要性
在Telegram(电报)用户突破20亿、中文社群规模持续扩张的背景下,定制化群管理机器人的开发已成为社群运营的战略刚需。这种技术工具不仅解决了海量用户管理的效率难题,更通过智能化功能重构了数字社群的治理范式。本文从管理效能、…...
VNA操作使用学习-01 界面说明
以我手里面的liteVNA为例。也可以参考其他的nanoVNA的操作说明。我先了解一下具体的菜单意思。 今天我想做一个天调,居然发现我连一颗基本的50欧姆插件电阻和50欧姆的smt电阻的幅频特性都没有去测试过,那买来这个nva有什么用途呢,束之高阁求…...
mysql-DELETE、DROP 和 TRUNCATE区别
在MySQL中,DELETE、DROP 和 TRUNCATE 是用于不同目的的SQL命令,它们各自执行不同的数据库操作。以下是它们的区别和适用场景: DELETE 用途:用于从表中删除满足特定条件的行。语法示例:DELETE FROM table_name WHERE …...
耘想Docker版Linux NAS的安装说明
耘想LinNAS(Linux NAS)可以通过Docker部署,支持x86和arm64两种硬件架构。下面讲解LinNAS的部署过程。 1. 安装Docker CentOS系统:yum install docker –y Ubuntu系统:apt install docker.io –y 2. 下载LinNas镜像…...
OpenCV图像拼接(4)图像拼接模块的一个匹配器类cv::detail::BestOf2NearestRangeMatcher
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::BestOf2NearestRangeMatcher 是 OpenCV 库中用于图像拼接模块的一个匹配器类,专门用于寻找两幅图像之间的最佳特征点匹配…...
k8s 配置imagePullSecrets仓库认证
在 Kubernetes (K8s) 中,imagePullSecrets 允许 Pod 访问私有镜像仓库,例如 Docker Hub、Harbor、阿里云镜像仓库、腾讯云 TCR 或自建的 registry.flow.cn。以下是完整的 imagePullSecrets 配置步骤: 步骤 1:创建 imagePullSecret…...
不用 Tomcat?SpringBoot 项目用啥代替?
在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。 同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使…...
Zabbix安装(保姆级教程)
Zabbix 是一款开源的企业级监控解决方案,能够监控网络的多个参数以及服务器、虚拟机、应用程序、服务、数据库、网站和云的健康状况和完整性。它提供了灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,从而能够快速响应服务器问…...
鸿蒙开发真机调试:无线调试和USB调试
前言 在鸿蒙开发的旅程中,真机调试堪称至关重要的环节,其意义不容小觑。虽说模拟器能够为我们提供初步的测试环境,方便我们在开发过程中快速预览应用的基本效果,但它与真机环境相比,仍存在诸多差异。就好比在模拟器中…...
深度学习中的“刹车”:正则化如何防止模型“超速”
深度学习中的“刹车”:正则化如何防止模型“超速” 大家好!今天我们来聊聊深度学习中的一个重要概念——正则化。 什么是过拟合? 想象一下,你正在教一个孩子认字。你给他看很多猫的图片,他都能正确识别。但是&#…...
在C语言基础上学Java【Java】【一】
众所周知,Java是C风格的语言,对于学过C语言的人学Java可以快速适应。 废话不多说,直接边看代码边学。 数据类型,输入和输出 import java.util.Scanner;//为了使用Scanner public class a1 {//a1是类名,就是文件名&am…...
工厂函数详解:概念、目的与作用
一、什么是工厂函数? 工厂函数(Factory Function)是一种设计模式,其核心是通过一个函数来 创建并返回对象,而不是直接使用 new 或构造函数实例化对象。它封装了对象的创建过程,使代码更灵活、可维护。 二、…...
FastAPI WebSocket 无法获取真实 IP 错误记录
FastAPI WebSocket 无法获取真实 IP 错误记录 问题描述 在使用 FastAPI WebSocket 服务时,发现无法获取设备的真实 Remote IP,所有连接均显示为内网地址 10.x.x.1。以下是完整的排查过程及解决方案。 排查步骤 1. 基础信息检查 • 现象复现࿱…...
Android自动化测试终极指南:从单元到性能全覆盖!
在快节奏的移动开发中,应用的稳定性与用户体验直接决定成败。手动测试效率低下,自动化测试成为提升质量的核心手段。本文将手把手带你掌握Android项目中的六大测试工具,涵盖单元测试、UI测试、性能测试、端到端测试等核心场景,助你构建坚如磐石的应用! 1. 单元测试:JUni…...
Python简单爬虫实践案例
学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 1、基于FastAPI搭建Web服务器 # 导入FastAPI模…...
Thunderbolt(雷电接口)详解
一、Thunderbolt的定义与核心特性 Thunderbolt 是由 Intel 和 Apple 联合开发的高速接口标准,结合PCIe和DisplayPort协议,支持 数据传输、视频输出、电源供应及设备级联。其核心特性包括: 超高带宽:Thunderbolt 4支持 40Gbps全双…...
基于springboot的房产销售系统(016)
摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统,它彻底改变了过去传统的…...
云盘搭建笔记
报错问题: No input file specified. 伪静态 location / {if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last;break;} } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; break; } } 设…...
