Re: [問題] Leetcode 744

看板C_and_CPP (C/C++)作者 (@@)時間4年前 (2021/07/11 23:30), 4年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
這題就是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://www.ptt.cc/bbs/C_and_CPP/M.1626017413.A.F96.html ※ 編輯: wawi2 (71.172.118.170 美國), 07/11/2021 23:31:57
文章代碼(AID): #1Wwmw5-M (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
4
6
完整討論串 (本文為第 2 之 3 篇):
4
6
文章代碼(AID): #1Wwmw5-M (C_and_CPP)