算法Day-8
15. 三数之和
给你一个整数数组 nums
,判断是否存在三元组 [nums[i], nums[j], nums[k]]
满足 i != j
、i != 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
a
、b
、c
和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 ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…...
屏蔽小米电视广告的方法
小米电视那个广告,太多,时间太长,影响观看感受,经过处理,成功屏蔽了小米电视的广告,提升了观影体验。 手动添加AD域名到 hosts 列表 小米(红米)电视关闭开机AD屏蔽hosts方法。 在路由器的hosts中配置。 …...
C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser
本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要,及北京联高软件开发有限公司实现的 C# 版本 xodr 文件(XML) Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时,ASAM 允许不受限制地…...
玩转PyCharm:常用操作和快捷键
常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能,这也是PyCharm作为集成开发环境(IDE)的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项(macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...
HeterGCL 论文写作分析
HeterGCL 论文写作分析 这篇文章,由于理论证明较少,因此写作风格了polygcl是两种风格的。polygcl偏向理论的写作风格,而hetergcl就是实践派的风格 首先看标题,其的重点是Graph contrastive learning Framework。其重点是framewo…...
简单的windows java -jar 无法启动jar包解决方法
简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心,我们本地使用idea 进行服务配置以及启动发现没有问题,然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题,但是我…...
iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出
效果图 不同方法: 【推荐】爱思助手 一步到位....【不推荐,会错漏很多照片】 1) 开始,打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选,“添加xx项”,选择本地...
ctfshow-文件上传-151-161
CTFshow文件上传 PHP文件上传:1、代码思路 黑名单是设置不能通过的用户,黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行,且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…...
【Windows】Microsoft Office 的 .docx .xlsx .pptx 等文件图标消失,变成空白图标
问题描述 在重新安装 Microsoft Office 后,发现 .docx、.xlsx、.pptx 等文件的图标消失,变成一个空白的图标。 原因分析 可能是由于Office组件的快捷方式和图标的注册表损坏所导致的。注册表是Windows操作系统中用来存储系统和应用程序配置信息的一个重…...
场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合
摘要:本文深入探讨了场景化运营的重要性以及其在商业领域的广泛应用。通过分析电梯广告、视频网站和电商产品的场景化运营方式,引入关键词“定制开发链动 21 模式 S2B2C 商城小程序”,阐述了如何将场景化运营理念融入到该小程序的开发与推广中…...
Axure中继器实现时间读取和修改
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:中继器实现时间读取和修改 主要内容:中继器内不同时间格式的向外读取,和向内赋值,实现中继器时间的修改 应用场…...
数据库聚合函数
数据库聚合函数 聚合函数 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的核心文化是推动开发(Development)和运维或需求(Operations)团队之间的协作与沟通,以实现更快速、更可靠的软件交付。以下是DevOps核心文化的几个关键方面: 协作与沟通࿱…...
create-vite my-vite-uniapp-project
搭建一个使用 Vue 3、TypeScript、Vite、uni-app、uView UI库和Element Plus的项目,你可以遵循以下步骤: 安装 Node.js 和 npm。 使用以下命令全局安装 Vue CLI: npm install -g vue/cli创建一个新的 Vue 3项目,并选择 TypeScr…...
DC系列靶机-DC8
一,环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-8.zip 二,攻略 首先nmap一通扫; 扫描主机IP和端口; 靶机的地址…...
重构复杂简单变量之用对象替换数据值
对象替换数据值用于将简单的数据值替换为具有行为和逻辑的对象。这种优化的目的在于提高代码的可读性、灵活性和可维护性,尤其是在数据开始承载更多含义或行为的时候。 一、什么时候使用 当我们在代码中使用简单的数据值(如字符串、整数)表…...
我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布
我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天,操作系统作为数字世界的基石,其重要性不言而喻。近日,华为公司在深圳隆重举行了原生鸿蒙操作系统发布会,向全球宣告了我国首个自主可控的移动…...
Spring Boot技术栈在论坛网站开发中的应用
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
Fast-LLM:加速大型语言模型训练的开源库
在人工智能领域,大型语言模型(LLM)的训练是一个计算密集型的任务,需要高效的工具来加速这一过程。Fast-LLM就是这样一个开源库,它旨在帮助研究人员和开发者快速、灵活地训练大型语言模型。 Fast-LLM简介 Fast-LLM是一…...
物理安全(Physical Security)
物理安全(Physical Security)是指为保护人员、建筑、设备以及其他物理资产免受物理威胁(如盗窃、破坏、间谍活动、自然灾害等)的一系列措施和技术。物理安全通常涉及三个主要方面:预防、检测和响应。以下是一些关键的物…...
Go语言开发环境搭建
#1024程序员节|征文# 文档说明 本文作者: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界面,在script中加载json文件 3、在script中加载处理json数据 4、用处理后的数据画图 vue界面代码如下: <script> import * as echarts from "echarts" //引入echarts核心模…...
【C++篇】探索STL之美:熟悉使用String类
CSDN 文章目录 前言 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&…...
ETLCloud搭配MySQL | 让关系型数据库更智能
在现代数据处理领域,ETL技术和云服务正迅速成为数据管理的核心。本文将探讨如何将 ETLCloud 与 MySQL 配合使用,将不同来源的表转移到另一张表中,以最大限度地提升关系型数据库的价值和性能。 一、前期准备 环境 首先确保MySQL源数据库能够…...
Java 开发——(上篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus
一、概述 记录时间 [2024-10-23] 本文是一个基于 Spring Boot 3 MybatisPlus 的项目实战开发,主要涵盖以下几个方面: 从零开始的项目创建IDEA 中开发环境的热部署Maven、Swagger3、MybatisPlus 等的配置路由映射知识静态资源访问文件上传功能实现拦截器…...
Psychophysiology:脑-心交互如何影响个体的情绪体验?
摘要 情绪的主观体验与对身体(例如心脏)活动变化的情境感知和评估相关。情绪唤醒增加与高频心率变异性(HF-HRV)降低、EEG顶枕区α功率降低以及心跳诱发电位(HEP)振幅较高有关。本研究使用沉浸式虚拟现实(VR)技术来研究与情绪唤醒相关的脑心相互作用,以实现自然而可…...
FunASR实时语音识别内网部署 | 无网络环境中的实时语音识别 | 实时语音识别
1. 在有网的电脑上面先下载下面内容 下载模型文件,可以到modelscope中下载 下载项目源码,可以到github中搜索funasr下载 配置环境,这里使用conda虚拟环境,创建并进入虚拟环境 conda create -n funasr python3.8 conda activate …...
【设计模式-状态模式】
状态模式(State Pattern)是一种行为设计模式,它允许一个对象在内部状态改变时改变它的行为。换句话说,这种模式让对象在不同的状态下能够表现出不同的行为,而不需要修改对象的代码。状态模式通过将对象的行为与状态进行…...
【代码随想录Day50】图论Part02
岛屿数量 深搜 题目链接/文章讲解:代码随想录 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、查看所有用户:…...
浅析电商网站建设趋势/seo深度解析
技能: 1. 面向对象编程思想 ; 2. c#,asp.net,javascript,HTML,XML,delphi 3. 常见GIS平台,包括 MapInfo/MapX , MapGuide Open Source/Enterprise 4. SQL Server,Oracle数据库的开发应用 5. 项目管理经验 6. 良好的英语交流能力 7. 一定的项目管理能力 项…...
哪个网站做ic外单好/济南今日头条最新消息
点击左上方蓝字关注我们11月7日飞桨领航团杭州站和太原理工大学站顺利进行,开发者们围坐一起,与行业资深专家对话,感受深度学习的魅力,来一起回顾一下~网易云音乐机器学习平台化赋能机器学习平台技术架构包含资源层、调…...
如何做网站后台/专业的网站建设公司
1.使用yum install java-1.7.0-openjdk,yum它是一个软件包管理器,提供查找、安装、删除某一个/一组/全部软件包的命令。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所…...
深圳优化公司/网络建站优化科技
Erasure Codes 基本思想 优点 缺点 Reed-Solomon (RS) 通常称为RS码,是一种线性分组循环冗余码。RS码中编码后的数据通常包括数据信息和校正信息。而在RS码中信息并不是以bit位进行处理的,而是以数位bit组成一个码中的符号位进行处理。通常编码符…...
wordpress草稿发布/南京seo网站优化
常见的STL容器--集合setset翻译为集合,是一个内部自动有序(递增)且不含重复元素的容器。如果要使用set,需要使用头文件#include<set>set的定义 set<typename> name; //和vector类似set容器内元素的访问:只能通过迭代器(iterator)访问 //注意:可以通过*i…...