35. 搜索插入位置【二分查找】

参考链接:
leetcode链接:https://leetcode-cn.com/problems/search-insert-position/

做完这道题目,咱们趁热打铁,顺便做一下,这道搜索插入位置,这道题目,

思路1:暴力法:
方法1

class Solution {
    public int searchInsert(int[] nums, int target) {
        for(int i=0;i<nums.length;i++){
            if(nums[i]>=target){
                return i;   //如果元素i等于或者大于目标值,那么就返回目标值的位置,并结束循环
            }
        }
        return nums.length; //如果全部遍历之后,没有相匹配的,那么就放到最后面,即返回数组长度
    }
}

解释说明
为甚么最后还要返回nums.length,前面不是已经返回i了吗
[1,2,3,4] target=5 这种情况

缺点:
不用二分的话数组一大你这个遍历的方法就会慢了,假如有100个元素,target大于第100个元素,那就得遍历一遍,就慢了。数据量上去的话还是用二分吧,要不然时间上你这差好多
很明显这种做法的算法时间复杂度很差,有序表的查找时间复杂度O(n)就是暴力破解

思路2:前提:没有绝对的代码,只有大体相同的思路,思路正确,我们只要用代码能够模拟出整个过程,那么这道题目就算是解出来了
找个具体例子,我们手动模拟一遍,就会发现,原来是这么一回事。
我们举个最简单的例子,
1,2,3,5,6
我们分别去查找0,4,7
然后就会通过对二分查找的模拟,就会发现,只需要返回l就会是我们需要的答案。

(题外话:二分查找是前人智慧的结晶,确实好用,hahah)
在这里插入图片描述

参考链接:
https://www.cnblogs.com/kyoner/p/11080078.html
java实现二分查找:https://www.cnblogs.com/luomeng/p/10585291.html
二分查找学习视频:https://www.bilibili.com/video/BV1b7411N798?p=70

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值