本文共 1238 字,大约阅读时间需要 4 分钟。
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 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
public class SearchInsert { public static void main(String[] args) { int[] nums = {1,3,5,6}; int target = 1; int result = searchInsert2(nums, target); System.out.println(result); } /** * 方法一:普通搜索 * @param nums * @param target * @return */ public static int searchInsert1(int[] nums, int target) { int len = nums.length; //找出位置 for (int i = 0; i < len; i++) { if (nums[i] >= target){ return i; } } return len; } /** * 方法二:二分搜索 * @param nums * @param target * @return */ public static int searchInsert2(int[] nums, int target) { int len = nums.length; int index = 0; //找出位置 while (index < len){ int mid = (index + len) / 2; if (nums[mid] == target){ return mid; }else if (nums[mid] > target){ len = mid; }else{ index = mid + 1; } } return len; }}
转载地址:http://mvslf.baihongyu.com/