算法学习笔记3 寻找数组的中心索引
https://leetcode.cn/leetbook/read/array-and-string/yf47s/ (篇幅有限,引用一下leetcode~)
题解思路:本题这种情况,可以使用二分查找法
一个问题待查找的是整数,并且范围已知的情况下
解释一下二分法
1 首先我们先定义一些需要用到的变量:
数组nums[]:有序排列(前提条件)
left:代表数组左侧元素的下标和最终返回的将target插入的下标,初始值为0(第一个元素)
right:代表数组右侧元素的下标,初始值为数组长度-1(最后一个元素)
sum:代表在数组中的中间元素
int mid = left + (right - left) / 2;
,请见图示:以数组[ 1, 3, 5, 6, 8, 2, 10 ],想找出target元素为2的数组索引为例:

遍历次数 target mid nums[mid] left right
1 2 3 6 0 6
于是:2<6(target<nums[mid]) ,因此right = mid-1=2, 此时mid的下标为:(0+2-0)/2=1,再次遍历:
遍历次数 target mid nums[mid] left right
2 2 1 3 0 2
此时第二次遍历的图示:

于是:2<3(target<nums[mid]) ,因此right = mid-1=0, 此时mid的下标为:0,再次遍历:
遍历次数 target mid nums[mid] left right
3 2 0 1 0 1
于是:2>1(target>nums[mid]) ,因此可以确定可插入的位置是left+1=0+1=1
最终的题解代码:
private int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
while (left <= right) {
int mid = (left + (right - left)) / 2;
if (nums[mid] == target) {
return mid; // 目标值已经在数组中,返回索引
} else if (nums[mid] < target) {
left = mid + 1; // 目标值在右半部分
} else {
right = mid - 1; // 目标值在左半部分
}
}
return left; // 目标值不存在于数组中,返回插入位置
}
🤔关于最后返回值,我迷糊了很久,于是乎问了gpt...(太蠢了,莫笑哈😂)





评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
Day 30✅ 今天做了:工程项目生成⏰ 明天计划:功能扩展📚 今日感悟:昨天休息玩去了。之前的nginx部署有点问题,今天搞了很久,项目部署我确实完全小白来着
0
Day 12✅ 今天做了:完成AI超级智能体项目3-4节⏰ 明天计划:完成AI超级智能体项目5-6节📚 今日感悟:掌握了基于SpringAI的Advisor使用、结构化输出、RAG基础等
0
Day 24✅ 今天做了:AI 面试通关120问。⏰ 明天计划:AI面试通关120问;简历优化。📚 今日感悟:AI 相关面试知识点基本熟知,仍需进一步巩固。
0
Day 37✅ 今天做了:1、扇贝英语单词打卡2、微信阅读15分钟3、英语听说读写4、编程导航学习⏰ 明天计划:待定📚 今日感悟:Keep going!
1
day26学了差不多一个月了,通过用户管理中心大概了解了java开发。后面了解,现在是ai时代了,很多程序员都用ai来编程了,甚至还有很多用ai编程的岗位。接下来这两天加上下一周完成ai超级智能体吧。感觉这个星期没干啥,也就部署了几个项目,学习ai知识,找找校招信息,用了几个ai工具,弄了一个云服务器。感觉有成果的是部署了一个用trae自动生成的用户管理中心当然只有后端,所以只能打开借口文档swa
2
作者分享
大家好,好久没更新自己的状况了。
经过长时间的gap,现在被以前的公司重新录取做对日驻场项目的开发,仍然是java
考虑到日本项目的技术栈和工作流与国内项目的巨大差异,也穿越幻想,清醒的认知到自己的处境。
今后,会继续持续不断地学习技术与外语(英语和日语),并保持记录的。
记录将发在这里,希望能够和各位老师和大佬们相互学习,多多交流!
2
稍微说点技术之外的一点心得吧。
最近突然发现,貌似忘记自己曾经有过抑郁症了。可能是因为发现想学习的事物太多太多了,除了技术之外还很多别的方面的电子书没看,有人类学,艺术,哲学,神秘学等就很想看。当然这些以后再看哈哈哈,现在就是以技术为主。所以就,有时候想到以前的一些状态反而会觉得平静。明天继续加油[胜利]
21
oj判题系统遇到的问题:当你的Docker Java库无法连接到Docker守护进程的Unix该怎么办?
10
OJ项目遇到的问题(直播里有讲但还是想记录一下)--构建远程项目相关
14
OJ判题系统小问题分享--文件夹权限
10
