LeetCode算法练习:35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n)
的算法。
示例 1:输入: nums = [1,3,5,6], target = 5 输出: 2
示例 2:输入: nums = [1,3,5,6], target = 2 输出: 1
示例 3:输入: nums = [1,3,5,6], target = 7 输出: 4
class Solution {public int searchInsert(int[] nums, int target) {int left=0;int right=nums.length-1;while(left<=right){int mid=(right+left)/2;//mid是一直在变化的,所以要放在循环里面if(nums[mid]==target){return mid;}else if(nums[mid]<target){left=mid+1;}else{right=mid-1;}}return left;}
}
就是将数组中间那个位置的数值(假设为num)和target比较,如果num=target直接返回mid,这个位置就是target所在的地方,如果num<target;说明找的这个中间位置的数找小了,要往比num大的位置找(left=mid+1),如果是num>target说明找的这个中间位置的数找大了要往比num小的位置找(right=mid+1),然后再经历while循环, int mid=(right+left)/2,这样一直循环,mid就会离targrt越来越近。