Michael Andolini
Senior Member
Java:
class Solution {
fun search(nums: IntArray, target: Int): Boolean {
val n = nums.size
var lo = 0
var hi = n - 1
while (lo <= hi) {
val mid = lo + (hi - lo) / 2
if (nums[mid] == target) return true
// lo <= mid
// -- target < lo -> lo = mid + 1
// -- target > mid -> lo = mid + 1
// lo <= target < mid -> hi = mid - 1
// lo > mid
// -- target < mid -> hi = mid - 1
// -- target >= lo -> hi = mid - 1
// mid < target < lo -> lo = mid + 1
if (nums[lo] == nums[mid]) {
lo++
continue
}
if (nums[lo] <= nums[mid] && (target < nums[lo] || target > nums[mid]) || target < nums[lo] && target > nums[mid]) {
lo = mid + 1
} else {
hi = mid - 1
}
}
return false
}
}


làm thành 2D DP như thật. Chắc cũng sẽ tìm ra được bottom up từ topdown nhưng mà cứ từng bước từ từ đã. Chính thức cán mốc 200 bài code thiếu nhi
thời gian tổng cộng code bài này chưa tới 15ph. Ko tìm ra topdown thì chắc cũng ko fail PV được 

(
Mấy bài nằm trong top blind 75 của big tech đều dạng này.
))