【算法】LeetCode算法题-Search Insert Position

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 【算法】LeetCode算法题-Search Insert Position

这是悦乐书的第152次更新,第154篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第11题(顺位题号是35)。给定排序数组和目标值,如果找到目标,则返回索引。 如果没有,请返回索引按顺序插入的索引。假设数组中没有重复项。例如:

输入:[1,3,5,6],5
输出:2

输入:[1,3,5,6],2
输出:1

输入:[1,3,5,6],7
输出:4

输入:[1,3,5,6],0
输出:0

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

首先排除几种特殊情况,然后顺位循环,拿每一个元素与目标值比较。


public int searchInsert(int[] nums, int target) {
    if (nums.length == 0 || nums[0]  target) { 
        return 0;
    }
    if(nums[nums.length-1]  target){ 
        return nums.length;
    }
    int result = 0;
    for(int i=0; inums.length; i++){
        if (nums[i]  target) {
            result++;
        }
        if (nums[i] == target) {
            return i;
        }
    }
    return result;
}

03 第二种解法

使用二分法快速定位,取中间位索引判断值,直到匹配上。


public int searchInsert2(int[] nums, int target) {
    int L = 0;
    int R = nums.length-1;
    while (true) {
        if (target = nums[L]) {
            return L;
        }
        if (target  nums[R]) {
            return R+1;
        }
        int mid = (L+R)/2;
        if (target = nums[mid]) {
            R = mid-1;
        }
        if (target  nums[mid]) {
            L = mid+1;
        }
    }
}

04 小结

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

【算法】LeetCode算法题-Search Insert Position

可能你还想看:

原文始发于微信公众号( 悦乐书 ):

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 【算法】LeetCode算法题-Search Insert Position


 上一篇
【算法】LeetCode算法题-Maximum Subarray 【算法】LeetCode算法题-Maximum Subarray
这是悦乐书的第154次更新,第156篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第13题(顺位题号是53)。给定一个整数数组nums,找出一个最大和,此和是由数组中索引连续的元素组成,至少包含一个元素。例如
2021-04-05
下一篇 
【算法】LeetCode算法题-Implement strStr 【算法】LeetCode算法题-Implement strStr
这是悦乐书的第151次更新,第153篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第10题(顺位题号是28)。给定两个任意字符串haystack、needle,返回haystack中第一次出现needle的索引
2021-04-05