问题描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
public int searchInsert(int[] nums, int target) {
int low=0,high=nums.length-1,mid=0;
while (low<=high){
mid=(low+high)/2;
if(nums[mid]==target)
return mid;
else if(nums[mid]<target)
low=mid+1;
else high=mid-1;
}
if (target<nums[mid])
return mid;
else return mid+1;
}
待续。。。看完评论觉得有改进的地方。
改进:
后面用三元表达式,代码更简洁,if太冗杂(三元表达式效率比if …else…更高一点详情看转载自if语句和三元运算符哪个效率更高)
但是很疑惑的是,运行时使用if 比三元内润消耗要少,,,
class Solution {
public int searchInsert(int[] nums, int target) {
int low=0,high=nums.length-1,mid=(low+high)/2;
while (low<=high){
if(nums[mid]==target)
return mid;
else if(nums[mid]<target)
low=mid+1;
else high=mid-1;
mid=(low+high)/2;
}
return target<nums[mid]?mid:mid+1;
}
}