标签:class dup 参考答案 关键点 while code solution inpu input
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
就是二分查找,关键点是要找到插入位置。也就是不小于目标值的最大位置。
class Solution {
public int searchInsert(int[] nums, int target) {
int low = 0;
int hi = nums.length - 1;
while (low <= hi) {
int mid = (low + hi)/2;
if (target < nums[mid]) {
hi = mid-1;
} else if (target > nums[mid]) {
low = mid+1;
} else {
return mid;
}
}
return low;
}
}
关键点是循环的判断要是<=,在low和hi相等时还会再执行一遍循环体,如果nums[low]小于目标值就会low++,否则low不变,返回low就是插入位置。
[leetcode][35] Search Insert Position
标签:class dup 参考答案 关键点 while code solution inpu input
原文地址:https://www.cnblogs.com/ekoeko/p/9594583.html