前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

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

ContactAuthor