每日一道 LeetCode (10):搜索插入位置
2024-09-07 19:32:57
每天 3 分钟,走上算法的逆袭之路。
前文合集
代码仓库
GitHub: https://github.com/meteor1993/LeetCode
Gitee: https://gitee.com/inwsy/LeetCode
题目:搜索插入位置
题目来源:https://leetcode-cn.com/problems/search-insert-position/
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0
解题思路:暴力方案
经常看我文章的同学看到这这道题都应该感觉是小意思了,最简单也是最好想的方案,直接迭代数字,用目标字符进行比较,如果大于等于当前的字符,直接返回当前的位置就好,如果一直都没达成这个条件,说目标字符是最大的,循环结束返回。
感觉说的太抽象了,直接上代码比较简洁:
public int searchInsert(int[] nums, int target) {
if (nums[nums.length - 1] < target) return nums.length;
for (int i = 0; i < nums.length; i++) {
if (nums[i] >= target) {
return i;
}
}
return 0;
}
解题思路:二分法
既然这道题的主要考察的是查找位置,怎么能少得了我赫赫有名的「二分法」。
尴尬的是我在做这道题的时候并没有想到这个算法,看来还是刷题少,需要多加练习。
二分法的思路就不介绍了吧,这个思路不清楚可以单独私信我。
直接上代码:
public int searchInsert_1(int[] nums, int target) {
int n = nums.length;
int left = 0, right = n - 1, ans = n;
while (left <= right) {
int mid = ((right - left) >> 1) + left;
if (target <= nums[mid]) {
ans = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return ans;
}
上面这两种方法虽然得到了相同的执行用时,在大量数据的情况下应该是二分法所使用的耗时更少,毕竟暴力方案在最差的情况下需要每次都把整个数组遍历一遍,而相对而言二分法所需要的平均循环次数更少。
最新文章
- [Sass]占位符 %placeholder
- iOS之自定义pickerview(行驶里程数)
- java树形目录展示
- Python 迭代器&;生成器
- 【Selenium2+Python】定位
- vim替换指令备忘
- mac--mac杂记
- div使用jqueryui 源码 | gridview多个功能的源码
- 九 EJB
- OC学习-1
- window下编译ffmpeg 比较简单
- LeetCode153:Find Minimum in Rotated Sorted Array
- windows下Socket链接溢出
- Linux下的IO监控与分析
- Python 数据模型
- hdu 5700区间交(线段树)
- 《15个提高Google搜索的技巧》
- Python数据可视化编程实战pdf
- 包建强的培训课程(6):Android App瘦身优化
- Java Json 数据下划线与驼峰格式进行相互转换
热门文章
- tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor &#39;x_1&#39; with dtype float and shape [?,227,227,3]
- 008.Nginx静态资源
- 关于Haskell计算斐波那契数列的思考
- ETag简介与作用
- 句柄Handle的释放(8)
- Crawlab Lite 正式发布,更轻量的爬虫管理平台
- Porter 进入 CNCF 云原生全景图,新版本即将发布!
- IDEA添加注释常用的快捷键
- Java中解决继承和接口默认方法冲突
- 题解 洛谷 P4171 【[JSOI2010]满汉全席】