今日算法之_36_搜索插入位置
前言
Github:https://github.com/HealerJean
1、搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
示例 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
1.1、解题思路
找到规律就行了,看代码吧,很简单的
1.2、算法
public int searchInsert(int[] nums, int target) {
//1、最差的情况数组会全部匹配
for (int i = 0; i < nums.length; i++) {
//相等的时候肯定成立
//当匹配到nums数组比目标值大的时候,表示肯定在它前面,这个数组从i位置向后移动,所以当前i的位置就是目标位置
if (nums[i] == target || nums[i] > target) {
return i;
}
}
//当结尾的时候,还没有匹配,target肯定超过了所有的数组大小,在数组往后一个
//这个时候,(nums[i] < target) ,因为现在数组值比目标值小,还会继续移动。我们只在里面关注下是否到了数组末尾了
return nums.length;
}
1.3、测试
@Test
public void test() {
int[] nums = {1, 3, 5, 6};
System.out.println(searchInsert(nums, 2));
}
2