Re: [问题] Leetcode 744

楼主: wawi2 (@@)   2021-07-11 23:30:11
这题就是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;
作者: deangood01 (跨斯欧鹅)   2021-07-14 04:06:00
人家ip在台湾捏 搞不好不是要去FAANG
作者: stock999 (史托克柰褦錼)   2021-07-16 22:29:00
台湾也有吧FAAXG

Links booklink

Contact Us: admin [ a t ] ucptt.com