給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。如果目標值不存在於數組中,返回它將會被按順序插入的位置。
你可以假設數組中無重複元素。
示例 1:
輸入: [1,3,5,6], 5
輸出: 2
示例 2:輸入: [1,3,5,6], 2
輸出: 1
示例 3:輸入: [1,3,5,6], 7
輸出: 4
示例 4:輸入: [1,3,5,6], 0
輸出: 0來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/search-insert-position
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
package cn.wan;
public class SearchInsert {
public static int searchInsert(int[] nums, int target) {
/**
* 給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。
* 如果目標值不存在於數組中,返回它將會被按順序插入的位置。
*/
int lower = 0;
int higher = nums.length - 1;
int mid = -1;
boolean flag = false;
while (lower <= higher) {
mid = (higher + lower) / 2;
if (nums[mid] < target) {
lower = mid + 1;
} else if (nums[mid] > target) {
higher = mid - 1;
} else {
flag = true;
return mid;
}
}
if (nums[mid] > target) {
return mid - 1 >= 0 ? mid : 0;
} else {
return mid + 1;
}
// int pozition = 0;
// for (int i = 0; i < nums.length; i++) {
// if(nums[i] == target)
// return i;
// if(nums[i]<target)
// pozition = i + 1;
// }
// return pozition;
}
public static void main(String[] args) {
int[] nums = {1, 3, 5, 6};
System.out.println(searchInsert(nums, 1));
System.out.println(searchInsert(nums, 3));
System.out.println(searchInsert(nums, 5));
System.out.println(searchInsert(nums, 6));
System.out.println(searchInsert(nums, 7));
System.out.println(searchInsert(nums, 4));
}
}
不知道是不是出了啥bug
如果將找不到返回值的部分改爲
return lower;
運行時間提高了/笑哭