当前位置: 首页 > news >正文

算法Day-8

15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

本题求一个数组中三个不同下标的值相加等于0的三个值,并返回这三个数,不容许重复的三元组,但返回的值的顺序可以随意。

我们这题先将nums进行排序,以便后续进行去重操作,可以通过一个for循环加双指针的思想进行求解,通过for循环i值,获取三元组中第一个数,并判断nums[i]是否大于0,因为是排序之后的数组,如果num[i]还大于0,就说明后续也没有几个数相加等于0的可能,直接返回。然后就是去重i,当i>0,去比较i和他前一个i是否相等。如果相等就说明重复,跳出当前循环将i++。确定了第一个数的值,我们就开始取left = i+1和right  =数组最后一位的下标,只有当left<right时才进行循环,判断三个数的值=sum,如果sum>0就让right--,如果sum<0就让left++,因为排过序了,所以right在数组最后--之后值一定变小,同理left的值一定变大,当sum ==0时就将各个值添加到res中,并因为要对left和right去重,判断各自要移动的方向的值是否与现在的值相等,因为我们现在的值已经加入到res中,所以有相等的就要直接++变成相等的值,在最后将left++和right--;最后再返回res。

public class Solution {public IList<IList<int>> ThreeSum(int[] nums) {var res = new List<IList<int>>();Array.Sort(nums);for(int i = 0;i<nums.Length;i++){if(nums[i]>0){break;}if(i>0&&nums[i]==nums[i-1]){continue;}int left = i+1;int right = nums.Length-1;while(left<right){int sum = nums[i]+nums[left]+nums[right];if(sum>0){right--;}else if(sum<0){left++;}else{res.Add(new List<int>{nums[i],nums[left],nums[right]} );while(left<right&&nums[right]==nums[right-1]) right--;while(left<right&&nums[left]==nums[left+1]) left++;left++;right--;}}}return res;}
}

18. 四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

  • 0 <= a, b, c, d < n
  • abc 和 d 互不相同
  • nums[a] + nums[b] + nums[c] + nums[d] == target

你可以按 任意顺序 返回答案 。

示例 1:

输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]

示例 2:

输入:nums = [2,2,2,2,2], target = 8
输出:[[2,2,2,2]]

提示:

  • 1 <= nums.length <= 200
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109

本题和三数之和基本思想一致,但多了一个值并且,target不一定是0,可能小于零,在剪枝时不但要判断nums[k]否大于零,还要判断值是否大于target,这样判断就默认target是大于0的,因为如果target小于0,比如target为-5,而数组为[-2,-2,-1]这样如果只判断num[k]大于target就跳出循环,会导致结果有问题。然后再遍历i=k+1;再继续剪枝,但条件要变成nums[k]+nums[i]>0&&nums[k]+nums[i]>target,现在将k和i看作一个整体。然后在想三数之和一样去获取left和right的值,并去重。

public class Solution {public IList<IList<int>> FourSum(int[] nums, int target) {var res = new List<IList<int>>();Array.Sort(nums);for(int k = 0;k<nums.Length;k++){if(nums[k]>0&&nums[k]>target){break;}if(k>0&&nums[k]==nums[k-1]){continue;   }for(int i = k+1;i<nums.Length;i++){if(nums[k]+nums[i]>0&&nums[k]+nums[i]>target){break;}if(i>k+1&&nums[i]==nums[i-1]){continue;}int left = i+1;int right = nums.Length-1;while(left<right){int n1 = nums[left];int n2 = nums[right];int sum = nums[k]+nums[i]+n1+n2;if(sum>target){right--;}else if(sum<target){left++;}else{res.Add(new List<int>{nums[i],nums[k],n1,n2});while(left<right&&nums[right-1]==n2) right--;while(left<right&&nums[left+1]==n1) left++;right--;left++;}}}}return res;}
}

344. 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例 1:

输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:

输入:s = ["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

提示:

  • 1 <= s.length <= 105
  • s[i] 都是 ASCII 码表中的可打印字符

本题反转字符数组将hello->olleh的过程。

可以使用双指针的思想

声明两个int类型的left一个等于0,一个right等于数组最后下标,即数组的开头和结尾,进行循环交互首尾数值,直到left<right交换完毕。

public class Solution {public void ReverseString(char[] s) {int right = s.Length-1;int left = 0;while(left<right){char temp = s[right];s[right] = s[left];s[left] = temp;left++;right--;}}
}

相关文章:

算法Day-8

15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元…...

屏蔽小米电视广告的方法

小米电视那个广告&#xff0c;太多&#xff0c;时间太长&#xff0c;影响观看感受&#xff0c;经过处理&#xff0c;成功屏蔽了小米电视的广告&#xff0c;提升了观影体验。 手动添加AD域名到 hosts 列表 小米(红米)电视关闭开机AD屏蔽hosts方法。 在路由器的hosts中配置。 …...

C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser

本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要&#xff0c;及北京联高软件开发有限公司实现的 C# 版本 xodr 文件&#xff08;XML&#xff09; Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时&#xff0c;ASAM 允许不受限制地…...

玩转PyCharm:常用操作和快捷键

常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能&#xff0c;这也是PyCharm作为集成开发环境&#xff08;IDE&#xff09;的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项&#xff08;macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...

HeterGCL 论文写作分析

HeterGCL 论文写作分析 这篇文章&#xff0c;由于理论证明较少&#xff0c;因此写作风格了polygcl是两种风格的。polygcl偏向理论的写作风格&#xff0c;而hetergcl就是实践派的风格 首先看标题&#xff0c;其的重点是Graph contrastive learning Framework。其重点是framewo…...

简单的windows java -jar 无法启动jar包解决方法

简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心&#xff0c;我们本地使用idea 进行服务配置以及启动发现没有问题&#xff0c;然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题&#xff0c;但是我…...

iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出

效果图 不同方法&#xff1a; 【推荐】爱思助手 一步到位....【不推荐&#xff0c;会错漏很多照片】 1) 开始&#xff0c;打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选&#xff0c;“添加xx项”&#xff0c;选择本地...

ctfshow-文件上传-151-161

CTFshow文件上传 PHP文件上传&#xff1a;1、代码思路 黑名单是设置不能通过的用户&#xff0c;黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行&#xff0c;且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…...

【Windows】Microsoft Office 的 .docx .xlsx .pptx 等文件图标消失,变成空白图标

问题描述 在重新安装 Microsoft Office 后&#xff0c;发现 .docx、.xlsx、.pptx 等文件的图标消失&#xff0c;变成一个空白的图标。 原因分析 可能是由于Office组件的快捷方式和图标的注册表损坏所导致的。注册表是Windows操作系统中用来存储系统和应用程序配置信息的一个重…...

场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合

摘要&#xff1a;本文深入探讨了场景化运营的重要性以及其在商业领域的广泛应用。通过分析电梯广告、视频网站和电商产品的场景化运营方式&#xff0c;引入关键词“定制开发链动 21 模式 S2B2C 商城小程序”&#xff0c;阐述了如何将场景化运营理念融入到该小程序的开发与推广中…...

Axure中继器实现时间读取和修改

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器实现时间读取和修改 主要内容&#xff1a;中继器内不同时间格式的向外读取&#xff0c;和向内赋值&#xff0c;实现中继器时间的修改 应用场…...

数据库聚合函数

数据库聚合函数 聚合函数 sum ,avg,max,min,count 1总分 SELECT SUM(student_result) FROM result; SELECT student_no,SUM(studet_result) FROM result WHERE student_no62平均分 avg SELECT AVG(studet_result) FROM result;3最大值 max 最小值 min SELECT MAX(studet_r…...

DevOps的文化观与工具

一、DevOps的文化 DevOps的核心文化是推动开发&#xff08;Development&#xff09;和运维或需求&#xff08;Operations&#xff09;团队之间的协作与沟通&#xff0c;以实现更快速、更可靠的软件交付。以下是DevOps核心文化的几个关键方面&#xff1a; 协作与沟通&#xff1…...

create-vite my-vite-uniapp-project

搭建一个使用 Vue 3、TypeScript、Vite、uni-app、uView UI库和Element Plus的项目&#xff0c;你可以遵循以下步骤&#xff1a; 安装 Node.js 和 npm。 使用以下命令全局安装 Vue CLI&#xff1a; npm install -g vue/cli创建一个新的 Vue 3项目&#xff0c;并选择 TypeScr…...

DC系列靶机-DC8

一&#xff0c;环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-8.zip 二&#xff0c;攻略 首先nmap一通扫&#xff1b; 扫描主机IP和端口&#xff1b; 靶机的地址…...

重构复杂简单变量之用对象替换数据值

对象替换数据值用于将简单的数据值替换为具有行为和逻辑的对象。这种优化的目的在于提高代码的可读性、灵活性和可维护性&#xff0c;尤其是在数据开始承载更多含义或行为的时候。 一、什么时候使用 当我们在代码中使用简单的数据值&#xff08;如字符串、整数&#xff09;表…...

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天&#xff0c;操作系统作为数字世界的基石&#xff0c;其重要性不言而喻。近日&#xff0c;华为公司在深圳隆重举行了原生鸿蒙操作系统发布会&#xff0c;向全球宣告了我国首个自主可控的移动…...

Spring Boot技术栈在论坛网站开发中的应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

Fast-LLM:加速大型语言模型训练的开源库

在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;的训练是一个计算密集型的任务&#xff0c;需要高效的工具来加速这一过程。Fast-LLM就是这样一个开源库&#xff0c;它旨在帮助研究人员和开发者快速、灵活地训练大型语言模型。 Fast-LLM简介 Fast-LLM是一…...

物理安全(Physical Security)

物理安全&#xff08;Physical Security&#xff09;是指为保护人员、建筑、设备以及其他物理资产免受物理威胁&#xff08;如盗窃、破坏、间谍活动、自然灾害等&#xff09;的一系列措施和技术。物理安全通常涉及三个主要方面&#xff1a;预防、检测和响应。以下是一些关键的物…...

Go语言开发环境搭建

#1024程序员节&#xff5c;征文# 文档说明 本文作者:SwBack 创作时间:2022‎年‎6‎月‎8‎日 ‏‎18:46:21 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack系统: Windows 11 go 1.18.2 安装包下载 安装包下载链接…...

嵌入式硬件设计:技术与实践

嵌入式系统是现代技术世界中的重要组成部分,几乎遍布所有领域,从消费电子产品、医疗设备到工业自动化和智能交通系统。嵌入式硬件设计是这一领域的核心,它涉及到对处理器、存储器、接口、传感器等多种硬件元件的选择、集成与优化,使系统能够在特定环境下执行特定任务。本文…...

vue中使用echarts,导入JSON数据画图

1、将.json文件放置在与index.html同一目录下 2、编写vue界面&#xff0c;在script中加载json文件 3、在script中加载处理json数据 4、用处理后的数据画图 vue界面代码如下&#xff1a; <script> import * as echarts from "echarts" //引入echarts核心模…...

【C++篇】探索STL之美:熟悉使用String类

CSDN 文章目录 前言 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&…...

ETLCloud搭配MySQL | 让关系型数据库更智能

在现代数据处理领域&#xff0c;ETL技术和云服务正迅速成为数据管理的核心。本文将探讨如何将 ETLCloud 与 MySQL 配合使用&#xff0c;将不同来源的表转移到另一张表中&#xff0c;以最大限度地提升关系型数据库的价值和性能。 一、前期准备 环境 首先确保MySQL源数据库能够…...

Java 开发——(上篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus

一、概述 记录时间 [2024-10-23] 本文是一个基于 Spring Boot 3 MybatisPlus 的项目实战开发&#xff0c;主要涵盖以下几个方面&#xff1a; 从零开始的项目创建IDEA 中开发环境的热部署Maven、Swagger3、MybatisPlus 等的配置路由映射知识静态资源访问文件上传功能实现拦截器…...

Psychophysiology:脑-心交互如何影响个体的情绪体验?

摘要 情绪的主观体验与对身体(例如心脏)活动变化的情境感知和评估相关。情绪唤醒增加与高频心率变异性(HF-HRV)降低、EEG顶枕区α功率降低以及心跳诱发电位(HEP)振幅较高有关。本研究使用沉浸式虚拟现实(VR)技术来研究与情绪唤醒相关的脑心相互作用&#xff0c;以实现自然而可…...

FunASR实时语音识别内网部署 | 无网络环境中的实时语音识别 | 实时语音识别

1. 在有网的电脑上面先下载下面内容 下载模型文件&#xff0c;可以到modelscope中下载 下载项目源码&#xff0c;可以到github中搜索funasr下载 配置环境&#xff0c;这里使用conda虚拟环境&#xff0c;创建并进入虚拟环境 conda create -n funasr python3.8 conda activate …...

【设计模式-状态模式】

状态模式&#xff08;State Pattern&#xff09;是一种行为设计模式&#xff0c;它允许一个对象在内部状态改变时改变它的行为。换句话说&#xff0c;这种模式让对象在不同的状态下能够表现出不同的行为&#xff0c;而不需要修改对象的代码。状态模式通过将对象的行为与状态进行…...

【代码随想录Day50】图论Part02

岛屿数量 深搜 题目链接/文章讲解&#xff1a;代码随想录 class Solution {// 计算网格中岛屿的数量public int numIslands(char[][] grid) {int sum 0; // 初始化岛屿数量为0// 遍历整个网格for (int i 0; i < grid.length; i) {for (int j 0; j < grid[0].length…...

潍坊 企业网站建设/微指数官网

11、查询oracle的连接数2selectcount(*)fromv$session;32、查询oracle的并发连接数4selectcount(*)fromv$sessionwherestatusACTIVE;53、查看不同用户的连接数6selectusername,count(username)fromv$sessionwhereusernameisnotnullgroupbyusername;74、查看所有用户&#xff1a…...

浅析电商网站建设趋势/seo深度解析

技能&#xff1a; 1. 面向对象编程思想 ; 2. c#,asp.net,javascript,HTML,XML,delphi 3. 常见GIS平台&#xff0c;包括 MapInfo/MapX , MapGuide Open Source/Enterprise 4. SQL Server,Oracle数据库的开发应用 5. 项目管理经验 6. 良好的英语交流能力 7. 一定的项目管理能力 项…...

哪个网站做ic外单好/济南今日头条最新消息

点击左上方蓝字关注我们11月7日飞桨领航团杭州站和太原理工大学站顺利进行&#xff0c;开发者们围坐一起&#xff0c;与行业资深专家对话&#xff0c;感受深度学习的魅力&#xff0c;来一起回顾一下&#xff5e;网易云音乐机器学习平台化赋能机器学习平台技术架构包含资源层、调…...

如何做网站后台/专业的网站建设公司

1.使用yum install java-1.7.0-openjdk&#xff0c;yum它是一个软件包管理器&#xff0c;提供查找、安装、删除某一个/一组/全部软件包的命令。基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所…...

深圳优化公司/网络建站优化科技

Erasure Codes 基本思想 优点 缺点 Reed-Solomon (RS) 通常称为RS码&#xff0c;是一种线性分组循环冗余码。RS码中编码后的数据通常包括数据信息和校正信息。而在RS码中信息并不是以bit位进行处理的&#xff0c;而是以数位bit组成一个码中的符号位进行处理。通常编码符…...

wordpress草稿发布/南京seo网站优化

常见的STL容器--集合setset翻译为集合&#xff0c;是一个内部自动有序(递增)且不含重复元素的容器。如果要使用set,需要使用头文件#include<set>set的定义 set<typename> name; //和vector类似set容器内元素的访问:只能通过迭代器(iterator)访问 //注意:可以通过*i…...