(num, subsequence)
| 102 | }; |
| 103 | |
| 104 | const binarySearch = (num, subsequence) => { |
| 105 | let [left, right] = [0, subsequence.length - 1]; |
| 106 | |
| 107 | while (left < right) { |
| 108 | /* Time O(log(N)) */ |
| 109 | const mid = (left + right) >> 1; |
| 110 | const guess = subsequence[mid]; |
| 111 | |
| 112 | const isNumTarget = num === guess; |
| 113 | if (isNumTarget) return mid; |
| 114 | |
| 115 | const isNumGreater = guess < num; |
| 116 | if (isNumGreater) left = mid + 1; |
| 117 | |
| 118 | const isNumLess = num < guess; |
| 119 | if (isNumLess) right = mid; |
| 120 | } |
| 121 | |
| 122 | return left; |
| 123 | }; |