天天看點

leetcode第一刷_Search for a Range

實際上也是一個二分查找的問題。

要找出範圍,決定了當找到這個數時不能馬上傳回,如果找target最前面的那個位置,隻有當這個位置等于target,且這個位置的前一個位置不等于target時,才能傳回這個位置。如果找的是target最後面的那個位置,那麼隻有當這個位置等于target,且這個位置的後一個位置不等于target時,才會傳回它。不滿足傳回條件時,下一次遞歸走什麼位置也不一樣,找前面的時候,小于等于都往前半走,找後面的時候,大于等于都往後半半兒找。

覺得我實作的有點醜,往前往後找其實差别不大,但是想合起來好像還不太好和。還有一點,但往前找找不到的時候,往後找就不用找了,直接傳回沒找到,道理顯然。