首页 > 编程语言 >【代码随想录算法训练营第一天】704. 二分查找、27. 移除元素

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

时间:2023-05-20 22:14:42浏览次数:53  
标签:二分 27 sum 随想录 mid 查找 移除 循环

Day1-数组

Leetcode704 二分查找

初解

已经不记得二分查找了,遍历找O(n)其实也过了,只是借此复习一下二分,确实快很多。
二分的前提条件题目里也都明示了:无重复,(从小到大)排序。我没有用到这个条件,自然时间复杂度高于最优解。

看完解答

我再看了一眼题目的标题,才知道是考BinarySearch嗯嗯啊啊,数算的一个小小算法已经忘记干净了。当然二分是非常实用的,解答里很贴心地喂了两种情况和模板,我默写一下:(默认从小到大排,数组叫sum,待查找数值为val

闭区间[l,r]

1.while()里面是l<=r,因为这是有意义的(最后剩一个)。
2.取中点之后,若sum[mid]<val,即目标区间缩小为右半边,就要改动左端点为mid+1,保证下一次循环还是闭区间。

开区间[l,r)

第一点:while()里面是l<r。
第二点:取中点之后,若sum[mid]<val,即目标区间缩小为右半边,就要改动左端点为mid+1,保证下一次循环还是左闭右开;若sum[mid]>val,即目标区间缩小为左半边,就要改动右端点为mid,保证下一次循环还是左闭右开。

其实用表格就可以解决了(但是我不会快速建表插件之外的建表方法),精髓就是注意在循环中保持区间性质不变,还有出口。

小技巧:防止l+r溢出,写mid=l+(r-l)>>1;

标签:二分,27,sum,随想录,mid,查找,移除,循环
From: https://www.cnblogs.com/StarryCoast/p/17417882.html

相关文章

  • AT_abc_270_d 总结
    题目:AT_abc_270_d链接:洛谷,AT,vjudge题意有两个人轮流取石子,有\(n\)颗石子和长度为\(k\)的数组\(a\),每次取石子的人可以取走\(a_i\)颗石子,当然当时剩下的石子数量要$\gea_i$才行,若二人都走最优策略,那么先手可以取走都少颗棋子?数据范围:\(1\len\le10^4,1\l......
  • AT_abc270_f 总结
    题意有\(n\)个岛屿,可以分别花\(x_i,y_i(1\lei\len)\)的代价在岛屿\(i\)建一个机场和港口,一个花\(z_i(1\lei\lem)\)的代价在\(a_i,b_i\)之间建一条双向道路。若\(x\)和\(y\)都有机场或港口或者有道路相连,那么\(x\)和\(y\)是联通的,问要花至少多少代价......
  • 代码随想录算法训练营第十一天|20. 有效的括号、1047. 删除字符串中的所有相邻重复项
    【参考链接】20.有效的括号【注意】1.括号匹配是使用栈解决的经典问题。2.这个命令最后进入a目录,系统是如何知道进入了a目录呢,这就是栈的应用(其实可以出一道相应的面试题了)。3.有三种不匹配的情况,第一种情况,字符串里左方向的括号多余了;第二种情况,括号没有多余,但是括号的......
  • 代码随想录Day6
    链表的复习章节  哈希的概念和应用:https://programmercarl.com/哈希表理论基础.html#哈希函数当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。数组set(集合)map(映射)这里数组就没啥可说的了,我们来看一下set。 Leetcode242时间复杂度O(N......
  • COMP30027 图书预测算法
    SchoolofComputingandInformationSystemsTheUniversityofMelbourneCOMP30027,MachineLearning,2023Project2:BookRatingPredictionTask:BuildaclassifiertopredicttheratingofbooksDue:GroupRegistration:Friday5May,5pmStageI:Friday19May......
  • burpsuite抓不到回环地址127.0.0.1的数据包
    使用火狐浏览器,访问本地搭建的靶场,然后burpsuite抓不到包查看了浏览器代理地址和端口,也查看了burpsuite的代理地址和端口号,都没有毛病。后来网上找了才发现,浏览器默认是关闭了访问回环地址的代理,我们需要打开才行。地址栏输入about:config,点接受风险并继续。 然后输入networ......
  • day45| 70+322+279
    70.爬楼梯 题目简述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 思路:1.要想爬到第n阶,必须先上第n-1阶或者n-2阶2.利用动态规划,定义初始条件dp[0]=1,dp[1]=23.有dp[i]=dp[i-1]+dp[i-2],其中i......
  • 代码随想录算法训练营第十天|232. 用栈实现队列、225. 用队列实现栈
    【参考链接】1.栈提供push和pop等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。不像是set或者map提供迭代器iterator来遍历所有元素。2.栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使......
  • 酷睿i7 12700k和i7 12700kf的区别 i712700k和i712700kf差多少
    i7-12700同12700K一样,也是采用的8大+4小,共12核20线程的设计,三级缓存也是25M。但是不支持超频,最大睿频为4.9GHz(12700K为5.0GHz)。组装电脑选i712700k还是i712700kf怎么搭配更合适这些点很重要 http://www.adiannao.cn/duTDP功耗为65W,最大睿频功耗约180W。自带了新款的RM1散热,新款......
  • 代码随想录算法训练营第九天|28. 找出字符串中第一个匹配项的下标、459. 重复的子字符
    【参考链接】28.找出字符串中第一个匹配项的下标【注意】1.kmp解决的就是字符串匹配的问题。2.kmp如何知道匹配过哪些字符串,并跳到匹配过的内容后面的字符。---前缀表3.找到一个子字符串里它的最长相等前后缀。4.前缀是包含首字母,不包含尾字母的所有子串;后缀只包含尾字母,不......