草庐IT

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

704、二分查找写在之前:之前一直是在用牛客刷题,突然用力扣没了智能提示还有点不习惯,慢慢来吧(吐槽:力扣调试还要升级会员,牛客不要,不过这也可以让我自己学会如何使用自己的编译器进行调试)思路:很明显的使用二分法来回答此题目,用暴力法也可解决,最开始的思路则是额外写一个二分法函数直接进行调用。其中个人认为需要注意的点是边界的处理,我最一开始便是没有注意到边界条件的处理导致了时间超限和解答错误,例如nums[mid]和target比较之后的left或者right是直接等于mid还是要加1或者减1,如果这里没有处理好则一些特殊情况会不正确,我其实并没有在错误后选择改正边界条件的判断,而是选择直接先

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

704.二分查找题目链接:力扣文档讲解:代码随想录视频讲解:https://www.bilibili.com/video/BV1fA4y1o7151.解题思路    二分查找明确思路前首先要明确区间,根据查找区间不同,有两种常见的解题方式,左闭右开[left,right]和左闭右闭[left,right)。 2.代码实现2.1左闭右闭intsearch(vector&nums,inttarget){//左闭右闭intnRight=nums.size()-1;intnLeft=0;intnMid=0;while(nLefttarget){nRight=nMid-1;}elseif(nums[nM

代码随想录Day1 | 数组01- leetcode 704、27

704-二分法题目链接:二分查找关键问题:        -边界(left、right)、当前查找值(middle)        -target大于当前查找值-->当前查找区域的右边,更改区间left        -target小于当前查找值-->当前查找区域的左边,更改区间right        -middle的计算:(right-left)/2 +left     -查找区间        -开区间or闭区间-->涉及while的判断条件即target不存在的情况时空复杂度:    -时间复杂度:数组长度为n,查找区间的长度:n、n/2、n/4、n/8、...、n/2^k -->O(

代码随想录算法训练营第一天 | 704.二分查找 27. 移除元素(18期)

 704.二分查找今日学习的文章链接和视频链接代码随想录●  自己看到题目的第一想法第三次做这道题目,能想起来大概怎么做,但是区间的定义又忘记了,vector的用法也有点模糊。●  看完代码随想录之后的想法 回想起左闭右开和左闭右闭合●  自己实现过程中遇到哪些困难 左闭右闭写出来后忘记middle更新可以简略成一行,并且一开始粗心吧middle的赋值写错了。左闭右开一时间忘记right的初始值没有变成数组最后一位再加意味,导致测试用例中,当数组为1个元素的时候会丢掉右边界。●  今日收获,记录一下自己的学习时长十分钟左右完成,之前刷过两次二分查找,重在回顾。27.移除元素今日学习的文章链接和

代码随想录算法训练营第一天|704.二分查找、27、移除元素

LeetCode704二分查找题目链接:704.二分查找-力扣(LeetCode)视频链接:手把手带你撕出正确的二分法|二分查找法|二分搜索法|LeetCode:704.二分查找_哔哩哔哩_bilibili思路看到题中说有序数组,还强调无重复元素,那么第一反应就是想想可否用二分法。而二分法做容易出错的地方就是边界条件,对区间的定义没有搞清楚。通常写二分法时对区间的定义有两种,第一种:[L,R](左闭右闭)、第二种:[L,R)(左闭右开),也会有极少数人使用左开右闭的写法。第一种写法:[L,R](左闭右闭)首先我们定义一个target在一个左闭右闭的区间里(这里应该知道的是:区间的定义决定了代码

代码随想录算法训练营第一天 | LeetCode 704 二分查找、LeetCode 27 移除元素

704二分查找题目链接:二分查找文章讲解:704.二分查找视频讲解:手把手带你撕出正确的二分法|二分查找法|二分搜索法|LeetCode:704.二分查找_哔哩哔哩_bilibili思路前提:数组为有序数组,数组中无重复元素(看到这个条件可以去想二分法)两种方法:左闭右闭即[left,right],或者左闭右开即[left,right)第一种写法定义target在一个左闭右闭的区间里,[left,right]while(leftif(nums[middle]>target)right要赋值为middle-1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束

Leetcode 704.二分查找、27.移除元素

文章目录704二分查找:题目链接解题思路:暴力循环:自己的思路二分查找:实现代码:错误解法:题目总结:二分版本一、二的区别:27.移除元素:题目链接解题思路:暴力循环:自己的标记排序:自己的双指针:别人的实现代码:错误解法:题目总结:704二分查找:题目链接解题思路:暴力循环:自己的思路从左往右,遍历每个元素。检查当前元素是否满足要求。若满足要求则返回当前元素的下标。时间复杂度:O(n);空间复杂度:O(n);二分查找:题目给定的是一个升序的数组,即有序数组!那么二分的前提是有序(或者具有某种特殊的性质!)。故可以采用二分。每次二分出来一个中间元素,然后将中间元素和target进行一个比较。若

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

题目链接:704.二分查找视频链接:手把手带你撕出正确的二分法|二分查找法|二分搜索法|LeetCode:704.二分查找_哔哩哔哩_bilibili题解:int search(int* nums, int numsSize, int target){    int left = 0, right = numsSize - 1;//定义数组两端元素的下标    while (left //左闭右闭区间        int middle = left + ((right - left) / 2);//不断地取区间的中间值        if (nums[middle] > target) { 

代码随想录算法训练营第17期Day01 | 704. 二分查找、27. 移除元素

704.二分查找 在刚拿到题的时候,直接进行了暴力求解,如下所示:classSolution(object):defsearch(self,nums,target):""":typenums:List[int]:typetarget:int:rtype:int"""i=0foriinrange(len(nums)):iftarget==nums[i]:returnireturn-1 但是本题的目的是利用二分查找寻找target,具体代码如下classSolution(object):defsearch(self,nums,target):""":typenums:List[int]:typet

秋招算法备战第1天 | 数组理论基础、704. 二分查找、27. 移除元素

前言之前曾报名过“代码随想录算法训练营十一期”,总共60天,坚持到第30天,基本涉及到了大部分的题型,包括数组、链表、哈希表、字符串、栈与队列、二叉树和回溯算法。动态规划自己之前单独刷过专题,也算了解基本的方法。贪心算法和单调栈了解的不多,这次补上。现在马上要面临秋招,又重新报名了卡哥的代码随想录算法训练营,没想到都开到第十七期了。希望跟着这次算法训练营的进度,复习之前刷过的内容,查漏补缺,备战秋招!代码随想录主要是两个重点:数组下标都是从0开始的数组内存空间的地址是连续的704.二分查找-力扣(LeetCode)一次AC,整体还是比较顺畅的,主要是明确自己用的是“左闭右开”还是“左闭右闭”c