LeetCode(二分查找法) 入门练习三

Posted Mr.zhou_Zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(二分查找法) 入门练习三相关的知识,希望对你有一定的参考价值。

LeetCode(二分查找法) 入门练习三

2021-11-18

题目

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

请必须使用时间复杂度为 O(log n) 的算法。

 

示例 1:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

实现

/**
 * @author zxy
 * @date 2021-11-18
 */
class Solution 
    public int searchInsert(int[] nums, int target) 
        int left = 0;
        int right = nums.length - 1;
        int mid = 0;
        while(left <= right)
            mid = left + ((right - left) >> 1);
            if(nums[mid] == target)
                return mid;
            else if(nums[mid] < target)
                left = mid + 1;
            else
                right = right - 1;
        
        return left;
    

认为特点

return left;
在left和right之间查找跟target匹配的值
当left > right的时候,说明没有找到与target匹配的值
那么就返回left

以上是关于LeetCode(二分查找法) 入门练习三的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(二分查找法) 入门练习二

LeetCode Binary Search Summary 二分搜索法小结

数据结构和算法三个“二分查找”练习

二分查找法类算法题总结

AK leetcode 流浪计划 - 二分查找

二分查找法