算法学习笔记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 25✅ 今天做了:1、扇贝英语单词打卡2、英语听说读写、听力练习3、微信阅读15分钟4、编程导航学习⏰ 明天计划:待定📚 今日感悟:Keep going!
1
Day 104✅ 今天做了:学习了Java反射及快速入门⏰ 明天计划:继续学习Java反射
0
Day 1✅ 今天做了:完成AI应用速通教程第一章、第二章、第三章前半节学习⏰ 明天计划:完成第三章后半节、第四章学习📚 今日感悟:理解机器学习、深度学习基础、transformer架构等
0
Day 12✅ 今天做了:AI 知识库面试通关120问(60-80);RAG知识库项目(知识库问答);MySQL 八股背诵;回溯算法题。⏰ 明天计划:AI 知识库面试通关120问(40-60);RAG知识库项目(Query优化);算法题。📚 今日感悟:验证RAG 知识库问答功能时,由于后端日志过于简略,人工排查难以定位问题所在,在借助 Claude Code后,仅提供项目目录与问题描述,AI 扫
1
day2(8.1)今日学习了rag的进阶知识,练习口诉了rag的流程。
0
作者分享
大家好,好久没更新自己的状况了。
经过长时间的gap,现在被以前的公司重新录取做对日驻场项目的开发,仍然是java
考虑到日本项目的技术栈和工作流与国内项目的巨大差异,也穿越幻想,清醒的认知到自己的处境。
今后,会继续持续不断地学习技术与外语(英语和日语),并保持记录的。
记录将发在这里,希望能够和各位老师和大佬们相互学习,多多交流!
2
稍微说点技术之外的一点心得吧。
最近突然发现,貌似忘记自己曾经有过抑郁症了。可能是因为发现想学习的事物太多太多了,除了技术之外还很多别的方面的电子书没看,有人类学,艺术,哲学,神秘学等就很想看。当然这些以后再看哈哈哈,现在就是以技术为主。所以就,有时候想到以前的一些状态反而会觉得平静。明天继续加油[胜利]
21
oj判题系统遇到的问题:当你的Docker Java库无法连接到Docker守护进程的Unix该怎么办?
10
OJ项目遇到的问题(直播里有讲但还是想记录一下)--构建远程项目相关
14
OJ判题系统小问题分享--文件夹权限
10
