LeetCode35 搜索插入位置

Posted by Think different. on November 28, 2020

LeetCode 35 搜索插入位置 难度:简单

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 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.我的思路

遍历一遍数组,先判断一组特殊值,如果目标值大于数组的最后一个值,那么返回的位置必然是数组的最后一个。

如果是其他情况,判断数组对应下标的值如果大于等于目标值,那么当前位置就是元素所在的位置或者即将插入的位置。

class Solution {
    public int searchInsert(int[] nums, int target) {
        int flag = 0;
        if (target>nums[nums.length-1]){
            flag = nums.length;
        }else{
            for (int i=0;i<nums.length;i++){
                if (nums[i]>=target){
                    flag=i;
                    break;
                }
            }
        }
        return flag;
    }
}
执行结果通过
显示详情执行用时0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗38.2 MB, 在所有 Java 提交中击败了74.84%的用户

2.官方解法

这道题说白了就是一道查找数组元素下标的问题。所以官方解法使用了效率更高的二分查找