leetcode 热题 100_三数之和

题解一:

        双指针遍历:暴力解法的三层遍历会超时,因此需要优化遍历的过程。首先是需要对结果进行去重,这里采用排序+跳过重复值的做法,在指针遍历时跳过已经遍历过的相同值。在第一层循环确定第一个值后,剩下两个符合要求的值一定是在其后相继出现的,因此可以用双指针从两侧逼近寻找符合的值,下面附上官方提供的伪代码(来源. - 力扣(LeetCode))

nums.sort()
for first = 0 .. n-1if first == 0 or nums[first] != nums[first-1] then// 第三重循环对应的指针third = n-1for second = first+1 .. n-1if second == first+1 or nums[second] != nums[second-1] then// 向左移动指针,直到 a+b+c 不大于 0while nums[first]+nums[second]+nums[third] > 0third = third-1// 判断是否有 a+b+c==0check(first, second, third)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> lists = new ArrayList<>();Arrays.sort(nums);int len = nums.length;for (int i = 0; i < len; i++) {if (i == 0 || nums[i] > nums[i - 1]) {int right = len - 1;for (int left = i + 1; left < right; left++) {if (left == i + 1 || nums[left] > nums[left - 1]) {while (right > left + 1 && nums[left] + nums[right] + nums[i] > 0) {right--;}if (nums[left] + nums[right] + nums[i] == 0) {List<Integer> list = new ArrayList<>();list.add(nums[i]);list.add(nums[left]);list.add(nums[right]);lists.add(list);}}}}}return lists;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505676.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础-----SQL语句之DDL语句

目录 前言 开启登录数据库 一、数据库操作 1.查询所有数据库 2.切换使用数据库 3.查询当前使用的数据库 4.创建数据库 创建一个hello数据库, 使用数据库默认的字符集。 创建一个itheima数据库&#xff0c;并且指定字符集 5.删除数据库 二、表操作 1.查询当前数据库所有…

ChatGPT支持下的PyTorch机器学习与深度学习技术应用

近年来&#xff0c;随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生&#xff0c;人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术&#xff0c;在许多行业都取得了颠覆性的成果。另外&#xff0c;近年来&#xff0c;Pytorch深度学习框架受…

ArmSoM Rockchip系列产品 通用教程 之 Camera 使用

Camera 使用 1. Camera 简介 ArmSoM系列产品使用的是mipi-csi接口的摄像头 ArmSoM-Sige7支持双摄同显&#xff1a; 2. RK3588硬件通路框图 rk3588支持2个isp硬件&#xff0c;每个isp设备可虚拟出多个虚拟节点&#xff0c;软件上通过回读的方式&#xff0c;依次从ddr读取每…

Vue开发实例(三)项目引入Element-UI

项目引入Element-UI 一、引入Element-UI二、注册组件1、vue2使用element-ui2、vue3使用element-ui 三、使用Element组件1、轻微改造2、验证element是否生效 一、引入Element-UI npm i element-ui --save npm install element-ui -S等待安装完成 二、注册组件 1、vue2使用ele…

关于机械臂的控制和基于tftp文件的上传和下载功能的实现

1、TCP客户端控制机械臂代码实现&#xff1a; #include <myhead.h> #define IP "192.168.126.58" #define PORT 8888#define CLI_IP "192.168.126.91" //客户端IP #define CLI_PORT 6666 //客户端端口号int main(int argc, const char *argv[]) {…

nginx笔记整理

目录 一.Nginx基础介绍 二.nginx安装配置 三.Nginx配置文件 3.1nginx主配置文件(/etc/nginx/nginx.conf) 3.2默认的网站配置文件(/etc/nginx/conf.d/default.conf) 四.创建新的虚拟主机 五.Nginx日志 5.1nginx日志格式 5.2查看日志 5.3日志缓存(了解) 5.4日志轮转(/…

基于springboot+vue的二手车交易系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

MySQL:索引的优化方法

索引是帮助存储引擎快速获取数据的一种数据结构&#xff0c;形象的说就是索引是数据的目录。 索引创建的时机&#xff1a; 索引并不是越多越好的&#xff0c;虽然他再查询时会提高效率&#xff0c;但是保存索引和维护索引也需要一定的空间和时间成本的。 不创建索引&#xff1a…

基于YOLOv8的多端车流检测系统(用于毕设+开源)

目录 ✨基于YOLOv8&#x1f680;的多端车流检测系统-MTAS (Multi-Platform Traffic Analysis System) 一、基本功能介绍 1、客户端 &#xff08;pyside6yolov8pytorch&#xff09; 2、网页端&#xff08;Vue3TypestriptPython3MySQL&#xff09; 3、创新点&#xff08;毕设需…

ABAP - SALV教程08 列设置热点及绑定点击事件

实现思路&#xff1a;将列设置成热点&#xff0c;热点列是可点击的&#xff0c;再给SALV实例对象注册点击事件即可&#xff0c;一般作用于点击单号跳转到前台等功能 "设置热点方法METHODS:set_hotspot CHANGING co_alv TYPE REF TO cl_salv_table...."事件处理方法M…

python 使用curl_cffi 绕过jax3指纹-Cloudflare 5s盾

现在越来越多的网站已经能够通过JA3或者其他指纹信息&#xff0c;来识别你是不是爬虫了。传统的方式比如换UA&#xff0c;加代理是没有任何意义了&#xff0c;所以这个时候我们就需要使用到curl_cffi 了。 1.TLS 指纹是啥&#xff1f; 在绝大多数的网站都已经使用了 HTTPS&am…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart&#xff1a;手指触摸动作开始 bindtouchmove&#xff1a;手指触摸后移动 bindend&#xff1a;手指触摸动作结束 属性类型说明touchesArray触摸事件&#xff0c;当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…