作者wawi2 (@@)
看板C_and_CPP
标题Re: [问题] Leetcode 744
时间Sun Jul 11 23:30:11 2021
这题就是ans没弄好 逻辑没甚麽大错
然後根据我刷Binary Search的经验
while(left<=right) 条件中如果有 = 的话
最好在while回圈里面加个条件处理if (left == right)的情况
刷久了你就知道多加一个if会帮助你脱离无穷回圈
不然就是改用while (left < right)
然後要注意while里面一定要更新left或right值
不然left跟right同时都不变的话 也是无穷回圈
两个小技巧择一使用即可 包你遇到任何binary search都不会搞成无穷回圈
经验分享~~ 祝您早日进FAANG
※ 引述《Kuba4ma ()》之铭言:
: https://i.imgur.com/gsNoiha.png
: https://i.imgur.com/ZRff8qC.png
: Leetcode 744. Find Smallest Letter Greater Than Target
: 一样的code在 leetcode 上执行和在 VScode 执行上结果不同
: 自己trace过一遍觉得应该没问题
: 是有 bug 吗? 还是.....?
: vector<char> letters = {'c' ,'f', 'j'};
: char ans;
: char target = 'k';
: int left = 0;
: int right = letters.size()-1;
: while(left<=right){
: int m = left+(right-left)/2;
: if(letters[m]>target){
: ans = letters[m];
: right = m-1;
: }
: else if(letters[m]<=target)
: left = m+1;
: }
: if(ans>target)
: cout<<ans<<endl;
: else
: cout<<letters[0]<<endl;
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 71.172.118.170 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1626017413.A.F96.html
※ 编辑: wawi2 (71.172.118.170 美国), 07/11/2021 23:31:57
1F:推 deangood01: 人家ip在台湾捏 搞不好不是要去FAANG 07/14 04:06
2F:推 stock999: 台湾也有吧FAAXG 07/16 22:29