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.
Here are few examples.
[1,3,5,6]
, 5 → 2[1,3,5,6]
, 2 → 1[1,3,5,6]
, 7 → 4[1,3,5,6]
, 0 → 0
非常简单的一道题, 就是找相应的位置, 最后如果找不到的话 <= start 返回start > end返回end+1 在start 和end中间返回end
算法复杂度是O(logn),空间复杂度O(1)
算法复杂度是O(logn),空间复杂度O(1)
public class Solution { public int searchInsert(int[] nums, int target) { int left = -1; int right = nums.length; while (left + 1 < right) { int mid = left + (right - left) / 2; if (nums[mid] >= target) { right = mid; } else { left = mid; } } return right; } }
public class Solution { public int searchInsert(int[] nums, int target) { if (nums == null || nums.length == 0) { return 0; } int start = 0; int end = nums.length - 1; int mid; while (start <= end) { mid = (start + end) / 2; if (target > nums[mid]) { start = mid + 1; } else if (target < nums[mid]) { end = mid - 1; } else { return mid; } } return start; } }
没有评论:
发表评论