【2024.01.02】刷算法07

新年首刷

三数之和

感想

说实话我看到这个题目的时候第一个想法就是用四数相加去解决,但是确实没有读题目的完全意思

用的方法是双指针法

假定有三个指针

我们希望找到所有不同的三元组 [nums[i], nums[j], nums[k]],使得 nums[i] + nums[j] + nums[k] == 0。下面是这个函数如何处理这个数组的:

步骤 1: 对数组进行排序

排序后的数组将是:

nums = [-4, -1, -1, 0, 1, 2]

排序是为了方便后续使用双指针技术,并且能更容易地跳过重复的元素

步骤 2: 遍历数组

外层循环从索引 i = 0 开始直到 nums.length - 2(因为我们需要至少三个数来形成三元组)。

迭代 1: i = 0 (nums[i] = -4)
  • 左指针 left = 1,右指针 right = 5(分别指向 -12)。
  • 这里不会找到和为零的三元组,因为最小的数已经是 -4
迭代 2: i = 1 (nums[i] = -1)
  • 左指针 left = 2,右指针 right = 5(分别指向 -12)。
  • 第一次三数之和为 0-1 + (-1) + 2 = 0。添加三元组 [-1, -1, 2] 到结果中。
  • 左右指针向内移动,跳过重复的 -1
接下来的迭代
  • 继续以同样的方式处理,直到 i 达到 nums.length - 2
  • i = 2 时(第二个 -1),由于它与前一个元素相同,会被跳过(避免重复的三元组)。

步骤 3: 返回结果

最终结果将是所有找到的不重复的三元组,对于这个示例,结果是:

[[-1, -1, 2], [-1, 0, 1]]

这个结果表明在数组 [-4, -1, -1, 0, 1, 2] 中,这两个三元组的和为零,并且不包含重复的三元组。

三数之和和四数之和都是为了找不同索引且之和相同的数组

 151. 反转字符串中的单词

 字符串转数组

在 JavaScript 中,将字符串转换为数组的方法主要有以下几种:

  1. 使用 split 方法

    • 这是最常用的方法。split 方法可以将字符串按照指定的分隔符拆分成数组。如果要将每个字符都分开成数组元素,可以使用空字符串作为分隔符。
    • 示例:let arr = str.split('');
  2. 使用扩展运算符 ...

    • 扩展运算符可以将字符串中的每个字符展开到数组中。
    • 示例:let arr = [...str];
  3. 使用 Array.from 方法

    • Array.from 方法可以将两类对象转换为数组:类数组对象(拥有 length 属性和若干索引属性的任意对象)和可迭代对象(包括 ES6 新增的数据类型 SetMap)。
    • 示例:let arr = Array.from(str);
  4. 使用 Object.assign 方法

    • Object.assign 方法可以用来将字符串转换为数组,但这种方法相对不太直观。
    • 示例:let arr = Object.assign([], str);
  5. 循环遍历字符串

    • 通过循环遍历字符串的每个字符,并将它们逐个添加到数组中。
    • 示例:
      let arr = [];
      for (let i = 0; i < str.length; i++) {arr.push(str[i]);
      }
      

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

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

相关文章

C#中文件夹类Directory的常用操作,unity获取streamingAssets下所有的文件夹及文件生成树结构物体

C#中文件夹类Directory的常用操作 .Directory方便我们对文件操作&#xff0c;首先引用命名空间 using System.IO; Directory.CreateDirectory()&#xff1a;用于创建文件&#xff0c;传入路径即可 Directory.CreateDirectory("D:\test");Directory.Delete()&#…

CF1772D 题解

洛谷题目链接 vjudge题目链接 Codeforces题目链接 分析 有序只跟相邻两个数有关所以只需考虑相邻的两个数。 接下来分类讨论&#xff1a; 如果 a i < a i 1 a_i < a_{i1} ai​<ai1​&#xff0c;如果要让 ∣ a i − x ∣ ≤ ∣ a i 1 − x ∣ | a_i-x| \le …

对话惠买集团董事长兼CEO杜瑞勇:直播电商粗放时代结束,如何用AI+XR打造精细化的智慧直播生态?

“ 未来将是专业选手精细化运营的智慧直播时代。“ 整理 | 梦婕 编辑 | 渔舟 出品&#xff5c;极新&#xff06;北京电子商务协会 直播电商在经过爆发式增长后&#xff0c;从业者不断涌入&#xff0c;竞争日趋激烈&#xff0c;行业发展必然将会进入到一个缓慢增长阶段。直播…

MySQL自定义时间间隔抽稀

MySQL自定义时间间隔抽稀 表设计数据如下按分钟抽稀按小时抽稀按天抽稀 表设计 create table monitor (tid varchar(255) not null,save_date datetime not null,tlevel decimal(10, 2) null,primary key (tid, save_date) );数据如下 按分钟抽稀 SELECT t2…

D50|单调栈

739.每日温度 初始思路&#xff1a; 暴力解法但是会超时。 class Solution {public int[] dailyTemperatures(int[] temperatures) {int[] answer new int[temperatures.length];for(int i 0;i<temperatures.length;i){for(int j i;j<temperatures.length;j){if(te…

.NET C# 如何获取object对象的数据

如何获取object对象的数据 在DAL层&#xff0c;一般会封装一些返回值&#xff0c;返回的类型就会为object &#xff0c;但是需要其中的值进行判断 public static object SaveFileIns(string filepath){return new { path pathlist, file_name fileNamelist, Message "…

FS4412系统移植及开发板启动过程

FS4412是基于samsung的arm Cortex-A9的Exynos4412的板子&#xff0c;Exynos4412采用了32nm HKMG工艺&#xff0c;是samsung的第一款四核芯片。 Windows装机过程&#xff1a; 1、准备Windows系统镜像、U盘启动盘 2、进入BIOS选择启动方式&#xff08;U盘启动&#xff09; 3、…

使用valgrind 分析缓存命中

使用valgrind 分析缓存命中 char transpose_submit_desc[] "Transpose submission"; void transpose_submit(int M, int N, int A[N][M], int B[M][N]) { int i,j,tmp;int bsize 8;unsigned long long addrA;unsigned long long addrB;unsigned long long setin…

C++第四天

定义一个Person类&#xff0c;私有成员int age&#xff0c;string &name&#xff0c;定义一个Stu类&#xff0c;包含私有成员double *score&#xff0c;写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数&#xff0c;完成对Person的运算符重载(算术运算符、条件运算…

CentOS7部署Kafka

CentOS7部署Kafka 一、部署1、前置条件2、下载与解压3、修改配置4、启动kafka二、使用详解1、创建一个主题2、展示所有主题3、启动消费端接收消息4、生产端发送消息三、代码集成pom.xmlapplication.propertiesKafkaConfiguration.javaKafkaConsumer.javaKafkaProducer.javaVehi…

Java 将Excel转换为TXT文本格式

TXT文件是一种非常简单、通用且易于处理的文本格式。在处理大规模数据时&#xff0c;将Excel转为TXT纯文本文件可以提高处理效率。此外&#xff0c;许多编程语言和数据处理工具都有内置的函数和库来读取和处理TXT文件&#xff0c;因此将Excel文件转换为TXT还可以简化数据导入过…

可狱可囚的爬虫系列课程 08:新闻数据爬取实战

前言 本篇文章中我带大家针对前面所学 Requests 和 BeautifulSoup4 进行一个实操检验。 相信大家平时或多或少都有看新闻的习惯&#xff0c;那么我们今天所要爬取的网站便是新闻类型的&#xff1a;中国新闻网&#xff0c;我们先来使用爬虫爬取一些具有明显规则或规律的信息&am…

系列六、RestTemplate

一、RestTemplate 1.1、概述 RestTemplate是一种便捷的访问RestFul服务的模板类&#xff0c;是Spring提供的用于访问Rest服务的客户端模板工具集&#xff0c;它提供了多种便捷访问远程HTTP服务的方法。 1.2、API https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE…

【MFC】计算机图形学实验:熟悉开发环境及工具(代码)

实验内容&#xff1a; 【MFC】计算机图形学实验1&#xff1a;熟悉开发环境及工具_绘制多义线mfc-CSDN博客 画笔和字体只给出两处代码&#xff1a; //创建刷子&#xff0c;设置填充色为黑色 CBrush NewBrush; NewBrush.CreateSolidBrush(RGB(0, 0, 0)); pDC->SelectObjec…

AI+金融:大模型引爆金融科技革命

仅供机构投资者使用 证券研究报告|行业深度研究报告 AI金融&#xff1a;大模型引爆金融科技革命 “AI应用”系列&#xff08;二&#xff09; 华西计算机团队 2023年7月28日 分析师&#xff1a;刘泽晶 联系人&#xff1a;刘波 SAC NO&#xff1a;S1120520020002 邮箱&#xff1a…

Spring动态定时任务异常Cron expression must consist of 6 fields

spring-context-5.3.24版本源码实例化CronTrigger 时判断了cron表达式长度必须是6&#xff0c;spring 4.x中已经不支持7个参数的cronin表达式了 解决方案&#xff1a; &#xff08;1&#xff09;使用别的定时框架 &#xff08;2&#xff09;如果涉及很多业务代码&#xff0c…

Apache Commons BCEL与Java字节码操作

第1章&#xff1a;Apache Commons BCEL简介 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Apache Commons BCEL&#xff08;Byte Code Engineering Library&#xff09;。你可能会问&#xff0c;BCEL是什么鬼&#xff1f;别急&#xff0c;小黑这就给你娓娓道来。BCEL…

Window10 下同时安装 JDK8 和 JDK11

1、下载两个版本的JDK 从Oracle 官网下载两个版本的 JDK 文件到本地&#xff0c;官网下载地址&#xff1a;JDK 下载 | ORACLE 2、部署环境变量 为方便切换 JDK 版本&#xff0c;这里分别新建&#xff1a;JAVA_HOME、JAVA11_HOME 和 JAVA8_HOME 变量&#xff0c;配置内容如下…

【unity】基于Obi的绳长动态修改(ObiRopeCursor)

文章目录 一、在运行时改变绳子长度:ObiRopeCursor1.1 Cursor Mu&#xff08;光标μ&#xff09;1.2 Source Mu&#xff08;源μ&#xff09;1.3 Direction&#xff08;方向&#xff09; 一、在运行时改变绳子长度:ObiRopeCursor Obi提供了一个非常通用的组件来在运行时修改绳…

Vue2.Hello World

步骤&#xff1a; 准备容器引包&#xff08;开发版本/生产版本&#xff09;创建实例new Vue()添加配置项 el指定挂载点data提供数据 准备容器 就是新建一个div标签 引包 vue2版本中文文档&#xff1a;https://v2.cn.vuejs.org/v2/guide/ 尝试 Vue.js 最简单的方法是使用 …