Re: [問題] Leetcode 744
這題就是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


: 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://www.ptt.cc/bbs/C_and_CPP/M.1626017413.A.F96.html
※ 編輯: wawi2 (71.172.118.170 美國), 07/11/2021 23:31:57
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章