題目:
給定一個排序數組和一個目标值,在數組中找到目标值,并傳回其索引。如果目标值不存在于數組中,傳回它将會被按順序插入的位置。
你可以假設數組中無重複元素。
示例:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP3dVYyY1RaZWOtJWeW1mW1xmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLygDNxIDNxMTMwIzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
代碼:
- 解法一
class Solution {
public int searchInsert(int[] nums, int target) {
int index=-1;
if(nums[nums.length-1]<target){
return(nums.length);
}
for(int i=0;i<nums.length;i++){
if(nums[i]==target){
return(i);
}else if(nums[i]>target){
return(i);
}
}
return(index);
}
}
- 别人的代碼
class Solution {
public int searchInsert(int[] nums, int target) {
int begin = 0, end = nums.length - 1, mid = 0;
while (begin <= end) {
mid = (begin + end) >>> 1;
if (nums[mid] < target) {
begin = mid + 1;
}else if(nums[mid] > target){
end = mid - 1;
}else{
return mid;
}
}if (begin == 0 || begin == nums.length) {
return begin;
}else {
return ((begin + end) >>> 1) + 1;
}
}
}