三数之和-Leetcode

leetcode链接:三数之和

题目描述

在这里插入图片描述

解题思路

主要要思考以下几个问题:

  • 如何选取三个元素?— 当前节点 + 左指针 + 右指针
  • 指针开始位置?— 左指针 = 当前节点位置 i + 1, 右指针 = n - 1
  • 如何保证不重复? — 先把数组排序,再去重
  • 如何控制指针移动? — 排序后, 左指针是最小值,右指针是最大值,根据当前三数之和的状态移动左右指针
class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);int n = nums.length;List<List<Integer>> res = new ArrayList<>();for(int i = 0; i < nums.length; i++) {int l = i + 1, r = n - 1;if(i > 0 && nums[i] == nums[i-1]) continue; // 去重while(l < r) {int sum = nums[i] + nums[l] + nums[r];if(sum < 0) l++;else if(sum > 0) r--;else {res.add(Arrays.asList(nums[i], nums[l], nums[r]));l++;r--;}}}return res;}
}

通过部分测试用例
在这里插入图片描述
这里去重要注意两个指针移动过程中也要去重!
更正代码:

class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);int n = nums.length;List<List<Integer>> res = new ArrayList<>();for(int i = 0; i < nums.length; i++) {int l = i + 1, r = n - 1;if(i > 0 && nums[i] == nums[i-1]) continue; // 去重while(l < r) {int sum = nums[i] + nums[l] + nums[r];if(sum < 0) l++;else if(sum > 0) r--;else {res.add(Arrays.asList(nums[i], nums[l], nums[r]));while(l < r && nums[l+1] == nums[l]) l++;while(l < r && nums[r] == nums[r-1]) r--;l++;r--;}}}return res;}
}

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

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

相关文章

利用自然语言处理(NLP)技术挖掘旅游评论数据

目录 简单了解 延伸 如何使用自然语言处理技术提高旅游评论情感倾向的准确性&#xff1f; 旅游评论数据中多模态信息融合的最佳实践是什么&#xff1f; 在旅游评论数据预处理和清洗过程中&#xff0c;哪些方法最有效&#xff1f; 使用Python网络爬虫技术进行旅游评论数据的…

Python酷库之旅-第三方库Pandas(072)

目录 一、用法精讲 291、pandas.Series.dt.round函数 291-1、语法 291-2、参数 291-3、功能 291-4、返回值 291-5、说明 291-6、用法 291-6-1、数据准备 291-6-2、代码示例 291-6-3、结果输出 292、pandas.Series.dt.floor函数 292-1、语法 292-2、参数 292-3、…

关于手机中的红外遥控

在手机电路中&#xff0c;有这么不起眼的一部分&#xff0c;虽看似简单&#xff0c;但是却给我们的生活在一定程度上带来了极大的便捷-红外遥控部分。 其置于手机顶部&#xff0c;并在壳体处挖开一个小孔&#xff0c;用于红外信号对外界的传递。如果你感兴趣的话&#xff0c;不…

Go语言项目实战班04 Go语言课程管理系统项目实战 20240807 课程笔记和上课代码

预览 课程特色 本教程录制于2024年8月8日&#xff0c;使用Go1.22版本&#xff0c;基于Goland2024进行开发&#xff0c;采用的技术栈比较新。 每节课控制在十分钟以内&#xff0c;课时精简&#xff0c;每节课都是一个独立的知识点&#xff0c;如果有遗忘&#xff0c;完全可以当…

基于JSP技术的人事管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; JSP技术 Java语言 工具&#xff1a; Myeclipse 系统展示 首页 管理员功能模块 员工功能模…

攻击者劫持 Facebook 页面用于推广恶意 AI 照片编辑器

近日&#xff0c;有攻击者劫持了 Facebook 上的网页&#xff0c;诱骗用户下载一个合法的人工智能&#xff08;AI&#xff09;照片编辑器&#xff0c;但实际上他们真正下载的却是一个专门用以盗取用户的凭据信息窃取程序。 趋势科技的研究人员发现的这一恶意广告活动利用了人工…

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解&#xff1a; ✅【实时数据】&#xff1a;即能够快速处理数据&#xff0c;且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】&#xff1a;可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是&#xff1a;…

Stable Diffusion绘画 | 图生图-批量处理

批量处理中&#xff0c;对待处理图片的要求&#xff1a;宽高比一致 修改提示词后批量处理 调整参数&#xff1a; 确保宽高与原图一致增加一定的重绘幅度 调整提示词信息&#xff1a; 批量处理后&#xff0c;出图如下所示&#xff1a; 修改模型后批量处理 恢复提示词&#xf…

HTTP:从基础概念到协议机制,详解请求响应与状态保持

文章目录 一、HTTP概述1、HTTP的理解2、HTTP是无状态的协议 二、HTTP协议的过程1、URL&#xff08;统一资源定位符&#xff09;2、客户端3、服务器端 三、HTTP请求与响应1、HTTP请求和响应2、HTTP请求方法3、状态码 四、HTTP报文1、请求报文首部2、响应报文首部3、首部字段 五、…

Gstreamer实现udp帧数据的转发(一)

前言 最近有个项目&#xff0c;要求实现信息分发&#xff0c;大概意思是经过了各种交换机和电台&#xff0c;经过两个信息分发软件实现udp数据的转发&#xff0c;可能包括文本、指令、音视频等数据。 例如&#xff1a;设备1 《---》 设备2&#xff08;信息分发软件1&#xff09…

基于STM32的摇杆开关控制小恐龙游戏(附源码)

文章目录 一、 前言谷歌小恐龙 二、硬件三、软件3.1 摇杆开关3.2 OLED屏幕 四、展示五、总结 一、 前言 最近有看到别人在OLED屏幕上玩小恐龙&#xff0c;所幸查阅下资料&#xff0c;并下好源码。可惜他的源码的主控是STM32F103ZET6&#xff0c;用的是STM32CubeIDE&#xff0c…

vue3学习day04-provide和inject、defineOptions、defineModel、Pinia、pinia持久化

15、provide和inject &#xff08;1&#xff09;作用&#xff1a;顶层组件向任意的底层组件传递数据和方法&#xff0c;实现跨层组件通信 &#xff08;2&#xff09;语法&#xff1a; 1&#xff09;顶层组件通过provide函数提供数据 2&#xff09;底层函数提供inject获取数据…

AR眼镜:重型机械维修保养新利器

重型机械作为工业与建设领域的重要支柱&#xff0c;其稳定运行直接影响效率与成本。然而在偏远地区&#xff0c;面临复杂故障和高昂维修成本&#xff0c;传统维修方式常显得力不从心。如今&#xff0c;安宝特的AR远程协助解决方案结合Vuzix AR眼镜&#xff0c;正悄然改变这一现…

常见八股面试题:Dubbo 和 Spring Cloud Gateway 有什么区别?

大家好&#xff0c;我是鸭鸭&#xff01; 此答案节选自鸭鸭最近弄的面试刷题神器面试鸭&#xff0c;更多大厂常问面试题&#xff0c;可以点击进行阅读哈&#xff01; 目前这个面试刷题神器刚出&#xff0c;有网页和小程序双端可以阅读&#xff01; 回归面试题&#xff01; …

【每日刷题】Day96

【每日刷题】Day96 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCP 44. 开幕式焰火 - 力扣&#xff08;LeetCode&#xff09; 2. 1022. 从根到叶的二进制数之和 - …

栈和队列(数据结构)

1. 栈(Stack) 1.1 概念 栈 &#xff1a;一种特殊的线性表&#xff0c;其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO &#xff08; Last In First Out &#xff09;的原…

Pytorch-张量的创建

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 简介&#xff1a; 一个Python深度学习框架&#xff0c;它将数据封装成张量&#xff08;Tensor&#xff09;进行处理&#xff0c;Python中的张量就是元素为同一种数据类型的多维…

算法训练,项目

一.木材加工 题解&#xff1a; 二分答案&#xff0c;左边0&#xff0c;右边可以为最长的木头&#xff0c;但我直接赋值了一个很大的值&#xff0c;进行二分&#xff0c;随后写个check;内部遍历木头截取为mid木块的个数&#xff0c;要是>k&#xff0c;满足要求&#xff0c;还…

开源免费的海报设计器vue-fabric-editor

vue-fabric-editor 是一个基于 Vue.js 和 Fabric.js 的创新前端富文本编辑器&#xff0c;它将传统的文本输入体验与图形设计元素相结合&#xff0c;为用户提供了全新的内容创作方式。 以下是关于 vue-fabric-editor 的详细介绍&#xff1a; 一、技术特点 框架结合&#xff1a;…

快速掌握Vue:基础命令详解

1. Vue概述 Vue.js&#xff08;读音 /vjuː/, 类似于 「view」&#xff09; 是一套构建用户界面的 「渐进式框架」。与其他重量级框架不同的是&#xff0c;Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层&#xff0c;并且非常容易学习&#xff0c;非常容易与其它库…