题目链接:https://leetcode.cn/problems/search-insert-position/description/?envType=study-plan-v2&envId=top-100-
算法思路:
其实与java中Arrays中的binarySearch()方法非常类似,我们肯定时用二分法来解决,但是如果退出循环后l指针指向的值小于target就意味着target的实际存放位置是l+1,如果大于target那么target就应该替代l位置的数,最后我们还要考虑下标是否会越界,如果l越界说明target的值一定是比nums中的数都大,所以也是直接放到l的位置就行。
代码实现:
java">
class Solution {public static void main(String[] args) {int[] nums = {2,7,8,9,10};int target = 9;System.out.println(new Solution().searchInsert(nums, target));}public int searchInsert(int[] nums, int target) {//二分查找int l = 0, r = nums.length - 1;while (l < r) {int mid = r - (r - l) / 2;if(nums[mid] < target) l = mid + 1;else if(nums[mid] > target) r = mid - 1;else return mid;}//判断是否越界和找到,如果没找到就返回l的后一个位置l+1代表新数会被插入的下标,否则返回lif(l < nums.length && nums[l] < target) return l + 1;else return l;}
}