力扣 | 15. 三数之和

在这里插入图片描述

暴力解法import java.util.*;public class _15_ThreeSum1 {public List<List<Integer>> threeSum(int[] nums) {if (nums == null || nums.length < 3)return new ArrayList<>();Set<List<Integer>> res = new HashSet<>();Arrays.sort(nums); // O(nlogn)// O(n^3)for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {for (int k = j + 1; k < nums.length; k++) {if (nums[i] + nums[j] + nums[k] == 0) {res.add(Arrays.asList(nums[i], nums[j], nums[k]));}}}}return new ArrayList<>(res);}public static void main(String[] args) {int[] nums = {-1, 0, 1, 2, -1, -4};System.out.println(new _15_ThreeSum1().threeSum(nums));}
}
import java.util.*;public class _15_ThreeSum2 {public List<List<Integer>> threeSum(int[] nums) {if (nums == null || nums.length < 3)return new ArrayList<>();Set<List<Integer>> res = new HashSet<>();Arrays.sort(nums); // O(nlogn)// O(n^2)for (int i = 0; i < nums.length; i++) {// 在 i + 1 ... nums.length - 1 中查找相加等于 -nums[i] 的两个数int target = -nums[i];int left = i + 1;int right = nums.length - 1;while (left < right) {int sum = nums[left] + nums[right];if (sum == target) {res.add(Arrays.asList(nums[i], nums[left], nums[right]));left++;right--;} else if (sum < target) {left++;} else {right--;}}}return new ArrayList<>(res); // O(n)}public static void main(String[] args) {int[] nums = {-1, 0, 1, 2, -1, -4};System.out.println(new _15_ThreeSum2().threeSum(nums));}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class _15_ThreeSum3 {public List<List<Integer>> threeSum(int[] nums) {if (nums == null || nums.length < 3)return new ArrayList<>();List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums); // O(nlogn)// O(n^2)for (int i = 0; i < nums.length - 2; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue;// 在 i + 1 ... nums.length - 1 中查找相加等于 -nums[i] 的两个数int target = -nums[i];int left = i + 1;int right = nums.length - 1;while (left < right) {int sum = nums[left] + nums[right];if (sum == target) {res.add(Arrays.asList(nums[i], nums[left], nums[right]));/*下面的代码相当于:while (left < right) {// 不管前后相不相等,left 都要往前走left++;if (nums[left - 1] != nums[left]) break;}while (left < right) {// 不管前后相不相等,right 都要往后走right--;if (nums[right + 1] != nums[right]) break;}*/// 去重while (left < right && nums[left] == nums[++left]);while (left < right && nums[right] == nums[--right]);} else if (sum < target) {left++;} else {right--;}}}return res;}public static void main(String[] args) {int[] nums = {-1, 0, 1, 2, -1, -4};System.out.println(new _15_ThreeSum3().threeSum(nums));}
}

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

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

相关文章

Linux的常用命令

查看命令的帮助 命令名 --help 切换目录命令cd cd app 切换到app目录 cd .. 切换到上一层目录 cd / 切换到系统根目录 cd ~ 切换到用户主目录 cd - 切换到上一个所在目录 使用tab键来补全文件路径 列出文件列表&#xff1a;ls ll ls(list)是一个非常有用的命令&…

排序:计数排序

目录 思想&#xff1a; 操作步骤&#xff1a; 思路&#xff1a; 注意事项&#xff1a; 优缺点&#xff1a; 代码解析&#xff1a; 完整代码展示&#xff1a; 思想&#xff1a; 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。 操作步骤&#xff…

基于 Hologres+Flink 的曹操出行实时数仓建设

本文整理自曹操出行实时计算负责人林震基于 HologresFlink 的曹操出行实时数仓建设的分享&#xff0c;内容主要分为以下六部分&#xff1a; 曹操出行业务背景介绍曹操出行业务痛点分析HologresFlink 构建企业级实时数仓曹操出行实时数仓实践曹操出行业务成果分析未来展望 一、曹…

AI新势力|将创业当作修行的BookGPT

近期&#xff0c;科技慢半拍联合AIGC开放社区采访了AI创业产品BootGPT的创始人陆再谋。陆总分享了他的创业之旅&#xff0c;从贵州到北京&#xff0c;再回到贵州的整段创业经历&#xff0c;从最初的困难到逐渐取得的成果&#xff0c;打造出了BookGPT这款创业产品。 在本次访谈中…

c++学习笔记-STL案例-机房预约系统4-管理员模块

前言 衔接上一篇“c学习笔记-STL案例-机房预约系统3-登录模块”&#xff0c;本文主要设计管理员模块&#xff0c;从管理员登录和注销、添加账号、显示账号、查看机房、清空预约五个功能进行分析和实现。 目录 7 管理员模块 7.1 管理员登录和注销 7.1.1 构造函数 ​编辑7.1.2…

加速电压对扫描电子显微镜成像的影响

扫描电子显微镜&#xff08;SEM&#xff09;是一种利用聚焦电子束扫描样品表面&#xff0c;通过激发和收集二次电子、特征X射线等信号&#xff0c;获得样品表面形貌和成分信息的分析仪器。在SEM成像过程中&#xff0c;加速电压是一个关键参数&#xff0c;对成像效果具有重要影响…

【概述版】悲剧先于解析:在大型语言模型的新时代,历史重演了

这篇论文探讨了大型语言模型&#xff08;LLM&#xff09;的成功对自然语言处理&#xff08;NLP&#xff09;领域的影响&#xff0c;并提出了在这一新时代中继续做出有意义贡献的方向。作者回顾了2005年机器翻译中大型语法模型的第一个时代&#xff0c;并从中汲取教训和经验。他…

运动型蓝牙耳机推荐哪款?2024运动耳机排行榜最新

​运动耳机在运动爱好者的装备清单中占有重要地位&#xff0c;要求舒适佩戴、卓越音质和环境适应性。市面上的运动耳机琳琅满目&#xff0c;选择合适的可能令人犹豫。那么都有哪些运动耳机值得入手呢&#xff1f;今天来跟大家聊聊运动耳机推荐哪款。 1.南卡开放式耳机&#xff…

数据结构:链式栈

stack.h /* * 文件名称&#xff1a;stack.h * 创 建 者&#xff1a;cxy * 创建日期&#xff1a;2024年01月18日 * 描 述&#xff1a; */ #ifndef _STACK_H #define _STACK_H#include <stdio.h> #include <stdlib.h>typedef struct stack{int data…

环形链表问题2(返回链表开始入环的第一个节点)

环形链表问题2&#xff08;返回链表开始入环的第一个节点&#xff09; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream…

妇幼保健院污水处理需要哪些工艺设备

妇幼保健院作为医疗机构&#xff0c;在日常运营中会产生大量的污水&#xff0c;因此污水处理是一个非常重要的环节。为了保证污水得到有效处理&#xff0c;并达到相关的排放标准&#xff0c;妇幼保健院污水处理工艺设备是必不可少的。 首先&#xff0c;妇幼保健院污水处理需要一…

【蓝桥杯EDA设计与开发】资料汇总以及立创EDA及PCB相关技术资料汇总(持续更新)

[18/01/2024]&#xff1a;目前为了准备蓝桥杯做一些资料贴&#xff0c;于是写下这一篇博客。 各种资料均来源于网络以及部分书籍、手册等文档&#xff0c;参考不保证其准确性。 如果在准备蓝桥杯&#xff0c;可与我私信共同学习&#xff01;&#xff01;&#xff01;&#xf…

大数据开发之Hadoop(Yarn)

第 1 章&#xff1a;Yarn资源调度器 思考&#xff1a; 1、如何管理集群资源&#xff1f; 2、如何给任务合理分配资源&#xff1f; Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&#xff0c;而MapReduce等运…

防止AWS主机被攻击

虚拟机经常连接不上 由于工作需要&#xff0c;自己在亚马逊买了台EC2主机&#xff0c;并在上面安装了工作要用的软件&#xff0c;以前是只有关键时间点才会连不上&#xff0c;可是最近几乎每隔一天就连不上&#xff0c;导致工作受影响&#xff0c;所以决定花时间看看怎么回事。…

分享一个基于easyui前端框架开发的后台管理系统模板

这是博主自己在使用的一套easyui前端框架的后台管理系统模版&#xff0c;包含了后端的Java代码&#xff0c;已经实现了菜单控制、权限控制功能&#xff0c;可以直接拿来使用。 springboot mybatis mybatis-plus实现的增删查改完整项目&#xff0c;前端使用了easyui前端框架。…

文件系统和IO流

目录 ​文件系统和IO流 一:文件的认知 认识文件 树型结构组织和⽬录: 文件路径&#xff08;Path): 文件形式: 二:File的方法 File的概述: File的属性 File的构造方法 File常用的get系列方法 ⽰例一:观察get系列的特点和差异 File常用的增,删方法 示例二:普通文件…

Unity 编辑器篇|(十)Handles (全面总结 | 建议收藏)

目录 1. 前言2 参数总览3 Handles两种使用方式3.1 基于Editor类的OnSceneGUI3.2 基于EditorWindow 4 Handles绘制4.1 Draw&#xff1a;绘制元几何体(点、线、面)4.1.1 抗锯齿&#xff1a; DrawAAPolyLine 、 DrawAAConvexPolygon4.1.2 绘制实线: DrawLine 、 DrawLines 、DrawP…

排序:非递归的归并排序

目录 递归与非递归的思想对比&#xff1a; 递归&#xff1a; 非递归&#xff1a; 代码解析&#xff1a; 完整代码&#xff1a; 递归与非递归的思想对比&#xff1a; 递归&#xff1a; 在之前的归并排序&#xff0c;它的核心思想是通过不断的分割&#xff0c;从一个数组变…

HTML 表单

文章目录 表单什么是表单GET和POST两种提交方式有什么不同?表单元素表单项外文本单行文本输入框单行文本密码框单选框复选框下拉列表框上传文件隐藏域填写邮箱填写电话填写数字填写日期进度条多行文本输入框提交按钮取消按钮 用户注册案例 表单 什么是表单 form:表单元素 此…

机器人强化学习-双机械臂

概要 基于 robosuite 库&#xff0c;进行双臂机器人学习训练 环境测试 下面展示下分别控制两个机械手随机运动的画面&#xff1a; 双臂显示场景如下&#xff1a;双臂调用代码如下&#xff1a; import numpy as np import robosuite as suite import robomimic import rob…