leetcode-三数之和

news2024/11/14 6:03:48

视频:https://www.bilibili.com/video/BV1bP411c7oJ/?spm_id_from=333.788&vd_source=dd84879fcf1be72f360461b01ecab0d6

从两数之和开始,排序后的两数之和,利用好升序的性质,可以将时间复杂度从on2降到on;
在这里插入图片描述

class Solution {
    public int[] twoSum(int[] numbers, int target) {
       //暴力没有利用好数组已经排好序的特性
      int i=0,j=numbers.length-1;
      while(i<j){
          //优化后 最小+最大 花了o1时间得到on
          int sum=numbers[i]+numbers[j]; //相加
          if(sum==target){
              return new int[]{i+1,j+1}; //直到找到答案
          }else if(sum<target){
              //小于 i++;
              i++;
          }else{
              //大于J--;
              j--;
          }
      }
      return null;
    }
}

//首先个数组排序 三数之和本质和两数之和是一样的;

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
        //i j k
        int n = nums.length;
        int j = 0;
        int k = 0;
        List<List<Integer>> ans = new ArrayList<>();
        if (n == 3) {
            if (nums[0] + nums[1] + nums[2] == 0) {
                List<Integer> list = new ArrayList<Integer>();
                list.add(nums[0]);
                list.add(nums[1]);
                list.add(nums[2]);
                ans.add(list);
            }
        }
        for (int i = 0; i < n - 3; i++) {
            if (i > 0 && nums[i] == nums[i - 1]) {
                continue;
            }
            if (nums[i] + nums[i + 1] + nums[i + 2] > 0) {
                 //如果现在都大于0了 直接break;
                break;
            }
            j = i + 1; 
            k = n - 1;
            while (j < k) {
                int s = nums[i] + nums[j] + nums[k]; //三个数字之和
                if (s > 0) {
                    k = k - 1;
                } else if (s < 0) {
                    j = j + 1;
                } else {
                    List<Integer> list = new ArrayList<Integer>();
                    list.add(nums[i]);
                    list.add(nums[j]);
                    list.add(nums[k]);
                    ans.add(list); //找到一个符合的
                    //因为是不能重复的,所以此时还需要移动 j和k的值
                    j += 1; 
                    while (j < k && nums[j] == nums[j - 1]) j++;
                    k -= 1;
                    while (j < k && nums[k] == nums[k + 1]) k--;
                }
            }
        }
        return ans;
    }
}

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

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

相关文章

MongoDB常用命令大全,概述、备份恢复

文章目录 一、MongoDB简介二、服务启动停止、连接三、数据库相关四、集合操作五、文档操作六、数据备份与恢复/导入导出数据6.1 mongodump备份数据库6.2 mongorestore还原数据库6.3 mongoexport导出表 或 表中部分字段6.4 mongoimport导入表 或 表中部分字段 七、其他常用命令八…

Qt 4.8.7 + MSVC 中文乱码问题深入分析

此问题很常见&#xff0c;然而网上关于此问题的分析大多不够深刻&#xff0c;甚至有错误&#xff1b;加之Qt5又更改了一些编码策略&#xff0c;而很多文章并未提及版本问题&#xff0c;或是就算提了&#xff0c;读者也不重视。这些因素很容易让读者产生误导。今日我彻底研究透了…

成像光谱遥感技术中的AI革命:ChatGPT

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力&#xff0c;ChatGPT在遥感中的应用&#xff0c;人工智能在…

AI第二课堂第一次笔记

conda的使用 在输入cmd进入终端后&#xff0c;使用命令 conda create -n env_name python3.10 创建环境 命令 conda activate env_name 打开环境&#xff0c;如&#xff1a;使用 conda deactivate退出指令 2.python一些常见操作 python中的文件打开与关闭 调开源的库 p…

spring框架(ioc控制反转 aop面向切面编程)

目录 服务端三层开发&#xff1a; spring框架&#xff08;ioc控制反转 aop面向切面编程&#xff09; 1、Spring框架的优点 什么是事物&#xff1f; 2、Spring的IOC核心技术 什么是ioc&#xff1f; 代码举例&#xff1a;&#xff08;详细流程见笔记&#xff09; **applic…

一些简单的基本知识(与C基本一致)

一、注释 1.单行注释&#xff1a;//&#xff08;快捷键&#xff1a;ctrlshift&#xff1f;&#xff0c;可以选择多行&#xff09; 2.多行注释&#xff1a;/* 文本 */ 二、变量 变量的作用是给一段内存空间起名&#xff0c;方便操作内存中的数据。 通过赋予某数据的…

肯德基蛋挞咖啡?品牌为何热衷于研发“奇葩”新品

想喝蛋挞的风还是吹到了咖啡这里... 是的&#xff0c;它来了&#xff0c;它带着新品走来了。前不久&#xff0c;肯德基旗下的肯悦咖啡推出了一款“蛋挞dirty”&#xff0c;就是把除去蛋挞的芯&#xff0c;留下蛋挞皮皮献给咖啡&#xff0c;成功变成了可以吃的咖啡或者说是可以…

Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别

目录 引言&#xff1a; 正文&#xff1a; 一、Serial GC工作原理 年轻代垃圾回收&#xff08;Minor GC&#xff09;&#xff1a; 老年代垃圾回收&#xff08;Major GC或Full GC&#xff09;&#xff1a; 二、年轻代和老年代的区别 年轻代&#xff08;Young Generation&a…

Java 中的正则表达式

转义字符由反斜杠\x组成&#xff0c;用于实现特殊功能当想取消这些特殊功能时可以在前面加上反斜杠\ 例如在Java中当\出现时是转义字符的一部分&#xff0c;具有特殊意义&#xff0c;前面加一个反斜可以取消其特殊意义&#xff0c;表示1个普通的反斜杠\&#xff0c;\\\\表示2个…

Java从入门到精通(第4版)中文电子版

前言 针对编程语言JAVA相关知识进行了精密的讲解&#xff0c;全册分为28章&#xff0c;含基础知识、核心知识、高级应用3大核心模块&#xff0c;具体细分又包括初识Java&#xff0c;类的高级特性&#xff0c;流程控制&#xff0c;字符串&#xff0c;数组&#xff0c;数据库操作…

团队提效探索:市场上最好的10款项目工单管理工具对比

本文将分享2024年值得关注的10款项目工单管理系统&#xff1a;PingCode、Worktile、蓝凌OA、禅道、泛微E-office、Teambition、monday.com、Basecamp、ProofHub、Wrike。 你是否曾经因为项目进度混乱而感到头疼&#xff0c;或是在处理大量任务时不知所措&#xff1f;在项目管理…

探索编程世界的乐趣:《C++青少年趣味编程108例》

&#x1f482; 个人网站:【 摸鱼游戏】【网址导航】【神级代码资源网站】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

TinyVue v3.17.0 正式发布,推出了一款基于 Quill 2.0 的富文本编辑器,功能强大、开箱即用!

本文由体验技术团队Kagol老师原创~ 我们非常高兴地宣布&#xff0c;2024年6月26日&#xff0c;TinyVue 发布了 v3.17.0 &#x1f389;。 TinyVue 每次大版本发布&#xff0c;都会给大家带来一些实用的新特性&#xff0c;上一个版本我们重构了 chart-core&#xff0c;新增 Circ…

算法2--贪心算法

1.老鼠和猫的交易 小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆。 仓库有N个房间&#xff1b; 第i个房间有 J[i] 磅的五香豆&#xff0c;并且需要用 F[i] 磅的猫粮去交换&#xff1b; 老鼠不必交换该房间所有的五…

笔记 5 :linux 0.11 注释,函数 copy_mem() , copy_process () , 中断函数 int 80H 的代码框架

&#xff08;38&#xff09;接着介绍一个创建进程时的重要的函数 copy_mem&#xff08;&#xff09; 函数&#xff1a; &#xff08;39&#xff09; 分析另一个关于 fork&#xff08;&#xff09; 的重要的函数 copy_process&#xff08;&#xff09;&#xff0c;与李忠老师的操…

暑期-大数据人工智能学习-在线实习项目

这个暑期 默默努力一把 悄悄惊艳所有人 在线企业项目试岗实训 助你突破固有思维模式&#xff0c;伴你进阶成长

MySQL索引特性(下)

目录 索引的理解 理解单个Page 理解多个Page 页目录 单页情况 多页情况 复盘一下 聚簇索引VS非聚簇索引 区别 索引操作 主键索引 唯一索引的创建 普通索引的创建 查询索引 删除索引 索引创建原则 索引的理解 理解单个Page MySQL 中要管理很多数据表文件&#xff0c;而…

阿里云ECS跨区域迁移,利用老操作系统作为新服务操作系统

由于特殊原因或者数据备份需要迁移ecs服务器 1.老服务快照 选择ecs实例&#xff0c;点开实例 进入云盘 https://ecs.console.aliyun.com/disk 在云盘上点击建立快照 2.准备oss同源 购买oss 存储&#xff0c;用于临时备份 https://oss.console.aliyun.com/bucket/ 记得必…

Spring如何进行动态注册Bean

在Spring框架中&#xff0c;Bean是应用程序的核心组成部分&#xff0c;而BeanDefinition则是这些Bean的元数据表示。随着应用程序的复杂性增加&#xff0c;我们可能需要更灵活地定义和注册Bean。Spring框架提供了几个扩展点&#xff0c;允许我们以编程方式影响Bean的创建和定义…

Window中 Redis下载安装

Redis7.2.3连接&#xff1a; 我用夸克网盘分享了「redis-windows-7.2.3.zip」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/4dfb0497707a 在安…