代码随心录第一天|Leecode (704二分查找、27移除元素、977有序数组的平方

news/2025/4/2 21:48:59/文章来源:https://www.cnblogs.com/lxq1130/p/18796641

Leecode 704二分查找
题目链接:https://leetcode.cn/problems/binary-search/
题目描述
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

题目解法
思路:
题目前提是数组为有序数组,数组中无重复元素(否则使用二分法时返回元素下表可能不是唯一的)。写二分法最重要的是把区间定义清楚,区间的定义就是不变量,在二分查找的时候保持不变量,在用while循环的时候坚持区间的定义来操作(循环不变量原则)。在二分法中,一般有两种定义方式,左闭右闭([left,right]),左闭右开([left,right))
第一种———[left,right]
我们定义target在一个左闭右闭的区间——[left,right],代码如下

while(left<=right)//使用left<=right是因为区间左闭右闭,存在left=right的时候。
if (nums[middle]>target){right=middle-1};//因为nums[middle]>target,所以target一定不等于middle且在区间左边,所以right=middle-1。
第二种———[left,right)
while(left<right)//使用left<=right是因为区间左闭右开,不存在left=right的时候。
if (nums[middle]>target){right=middle-1};//因为nums[middle]不等于target且在区间左边,所以right=middle。
else if(nums[middle]<target){left=middle+1};//因为左闭。
总结
在二分查找中,通过不断调整左指针和右指针,使得查找区间逐渐缩小,最终当中间元素等于目标值时,此时middle=目标值在数组中的下标。

Leecode 27移除元素
题目链接:https://leetcode.cn/problems/remove-element/
题目描述


题目解法
思路:
数组元素不能删除,只能覆盖
暴力解法
两层for循环,一个for循环遍历数组元素,另一个for循环用来更新数组。

假设nums=[3,2,2,3],val=3.
初始size=4.第一次循环i=0,nums[0]=3等于val,进入循环将nums[1]覆盖到nums[0],nums变为[2,2,2,3],后i=-1,size=3。第二次循环nums[1]=2不等于val,i=1,第三次循环i=2,一直循环直到第五次,循环结束size=2。
双指针解法
通过一个快指针和满指针在一个for循环下完成两个for循环的工作。

把快指针所获取的值赋给慢指针所在的位置,快指针用来获取新数组中的元素,满指针获取新数组需要更新的位置。快指针每次都+1,慢指针看情况加一(当需要移除的值与快指针相等时,慢指针不变)。

Leecode 977有序数组的平方
题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/
题目描述

题目解法
思路:
1、每个数平方后再排序 2、双指针
暴力排序

双指针


原本数组有序,但是负数平方后可能会成为最大值,所以数组平方后最大值一定在数组两边,定义一个新数组result和A数组一样的大小,让K指向result数组终止位置。

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

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

相关文章

Linux输出重定向全攻略:掌握命令行高效管理的艺术

概述 在Linux中,输出重定向是一种将命令的输出(标准输出或标准错误)重定向到文件或其他设备的方法。以下是一些常见的输出重定向操作符及其用法:标准输出重定向 (>)将命令的标准输出重定向到一个文件中。如果文件不存在,它会被创建;如果文件已经存在,它会被覆盖。 co…

XN2025 集训记录 D6

梦境是一个微妙的境界 , 空寂感与包裹感交织 , 哪些景象明明永远不可能出现在现实 , 却像家一样 . . . 温暖 . . . 熟悉XN2025 集训记录 D6 今天西安也降温了 , 一晚上没睡好 , 做了能有三四个梦 . 梦到自己去神秘巨大建筑群集训 , 找不到同桌还没找明白房间 . . . 这都啥跟啥 …

树上差分学习笔记+做题记录

树上差分 点的差分求路径 \(u-v\) 上的点被经过的次数. \(cnt[x]\) 表示点 \(x\) 被经过的次数. 核心代码:cnt[u]++; cnt[v]++; cnt[lca(u,v)]--; cnt[father[lca(u,v)]]--;边的差分求 \(u-v\) 路径上每条边的经过次数 \(cnt[x]\) :代表 \(x\) 向上的边经过的次数. 核心代码:cn…

小迪安全|web安全|渗透测试|小白学习笔记Day1

Day1-概念名词 域名 什么是域名例www(可以换).xxx.com(可以换) 可以简单的理解为我们平常使用的网址,具体可以参考:https://baike.baidu.com/item/域名/86062域名在哪里注册国内像万网,新网都可以注册域名,可以在上面提及的网站上面进行查询以及进行注册什么是二级域名以及…

蓝桥杯1

今天写了写蓝桥杯的顺序结构程序设计类型的题,相关数学计算,输入输出复习。

分布式架构下出现的503问题

今天写完接口之后发现客户端503了,查看后端代码报的错 先看最下面的caused by:OK有点抽象,看看上面报的什么:哦我好像有点理解,该不会是我sql配置写错了吧,看看:id怎么会有一点报红呢?哦,是http没有加s啊有些时候就是会出现这种很扯的问题

经典算法 - 贪心算法

贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。1. 基本定义 贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。 局部最优推出全局最优。2. 分发饼干 力扣455题。 问题描…

经典算法 - 回溯法

回溯法是一种纯暴力的搜索,并不是一种高效的算法。1. 基本概念 递归和回溯相辅相成。只要有递归,就会有回溯。 回溯法是一种纯暴力的搜索,并不是一种高效的算法。 回溯法可以解决的问题:组合问题 切割问题 子集问题 排列问题 棋盘问题如何理解回溯法 回溯法,都可以抽象为一…

Spring AOP 应用

AOP可以将一些公用的代码,自然的嵌入到指定方法的指定位置。Spring AOP 应用 1. 介绍 AOP:面向切面编程,对面向对象编程的一种补充。 AOP可以将一些公用的代码,自然的嵌入到指定方法的指定位置。 比如:如上图,我们现在有四个方法,我们想在每个方法执行一开始,输出一个日…

RHO-1: Not All Tokens Are What You Need 阅读笔记

论文地址 开源代码 论文背景 现有的大语言模型主要通过增加参数来提升性能,忽略了数据中的一些噪声tokens。 主要难题:去除tokens可能会导致语义产生偏差,关键在于如何能准确识别无效tokens。 主要贡献 先在高质量语料库对模型进行训练,根据期望分布对tokens进行评分,过滤…

接口测试——jmeter的实战

一、接口的请求方式 1、post请求 (1)添加线程组(2)添加http请求(3)填写http请求内容断言(4)查看结果(5)保存(6)运行2、get请求二、依赖接口 1、登录接口2、用户接口3、配置元件中加入cookie管理器优化多接口:http请求默认值三、关联接口省份接口:http://www.webx…

2023盘古石决赛复现

很大功夫。2023盘古石决赛复现 VC容器密码2ej)!,[JN-U;wm19J=d9sZt_L6#bf+}[ 这套题做起来感觉非常不舒服,学习到许多,菜是原罪。 感谢各位佬的博文指点。 流量分析 计算流量包文件的SHA256值是?[答案格式:字母小写] 2d689add281b477c82b18af8ab857ef5be6badf253db1c192352…