LeetCode 704 二分查找
本文最后更新于636 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com

题目链接:https://leetcode.cn/problems/binary-search/

文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html

视频讲解:https://www.bilibili.com/video/BV1fA4y1o715

1.第一下看到这个题目的想法是当时学数据结构的时候恶补过这个,也是正巧是蓝桥杯的时候,题目倒是没想多少就回忆来着,对于这个题其实我的第一个想法就是Binary Search,为什么说这个呢就是当时学习的时候看一个课,总能听到说Binary Search当时还不知道是啥意思呢,后来就总在脑子里嘟囔,所以这个二分我印象还是听深刻的。

2.所以看了一下代码随想录,看了一下思路,就在这个上面没停留太长时间,但是我注意到这个左闭右开,左闭右闭的问题我是我之前没有考虑到的,所以这次着重研究这个问题,以及对于数据越界以及防止溢出上也注重注意,小小数组也是给我不小的收获。

3.困难不是很多,都是细小的问题。

4.对我来说更多的是大家一起学习算法和在群里讨论的氛围,还比较吸引我,其次就是我终于将博客开始写我的第一篇文章。希望可以一直坚持下去。

左闭右闭 :CPP

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() -1;//数组越界
        while(left<=right){
            int mid = (left + right)/2;
            //int mid = left + (right - left);//防止溢出
            if(nums[mid] < target){
                left = mid + 1;
            }else if(nums[mid] > target){
                right = mid -1;
            }else{
                return mid;
            }
        }
        return -1;
    }
};

左闭右开 :CPP

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size();//发生变化,注意区间变化
        while(left < right){
            int mid = left + (right - left)/2;
            if(nums[mid] < target){
                left = mid + 1;//这里也是区间变化
            }else if(nums[mid] > target){
                right = mid;
            }else{
                return mid;
            }
        }
        return -1;
    }
};
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Cream_dpl