public class SearchInsertPosition { /** * @param args */ public static void main(String[] args) { SearchInsertPosition sip = new SearchInsertPosition(); int [] nums1 = new int [] { 1 , 3 , 5 , 6 }; System.out.println(sip.searchInsert(nums1, 5 )); int [] nums2 = new int [] { 1 }; System.out.println(sip.searchInsert(nums2, 0 )); int [] nums3 = new int [] { 1 , 3 , 5 , 6 }; System.out.println(sip.searchInsertLogN(nums3, 2 )); } //nums = [1,3,5,6], target = 5,输出2 //nums = [1], target = 0,输出0 public int searchInsert( int [] nums, int target) { int insertIndex = 0 ; for ( int i = 0 ; i < nums.length; i++) { if (target < nums[i]) { return i; } else if (target == nums[i]) { return i; } else if (target> nums[i]) { insertIndex++; } } return insertIndex; } //nums = [1,3,6], target = 5,输出2 public int searchInsertLogN( int [] nums, int target) { int left = 0 ; //注意:-1 int right=nums.length- 1 ; //注意:<= while (left<=right) { int mid = (left+right)/ 2 ; if (nums[mid] == target) { return mid; } else if (nums[mid] < target) { left=mid+ 1 ; } else { right=mid- 1 ; } } return left; } } |