给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 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;
运行时间提高了/笑哭