已解决
35. 搜索插入位置 --力扣 --JAVA
来自网友在路上 189889提问 提问时间:2023-11-20 21:17:15阅读次数: 89
最佳答案 问答题库898位专家为你答疑解惑
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为
O(log n)
的算法。
解题思路
- 对数组只存在一个元素的特殊情况进行单独判断;
- 设置变量控制左右边界,通过取中间值比较大小来缩小范围,避免遍历数组所有值;
代码展示
class Solution {public int searchInsert(int[] nums, int target) {if(nums.length == 1){if(nums[0] == target){return 0;} else if (nums[0] < target){return 1;} else {return 0;}}int left = 0;int right = nums.length - 1;int middle = 0;while (left < right){if(left + 1 == right){if(nums[left] == target){return left;} else if(nums[right] < target){return right + 1;} else if (nums[left] > target) {return Math.max(0, left - 1);} else {return right;}} else {middle = (left + right) / 2;if(nums[middle] == target){return middle;} else if (nums[middle] > target){right = middle;} else {left = middle;}}}return middle + 1;}
}
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"35. 搜索插入位置 --力扣 --JAVA":http://eshow365.cn/6-40632-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 产品经理不得不知道的电商API接口对接流程梳理
- 下一篇: 进程保活-账号同步实现