1
/**
2
* @param {number[]} nums
3
* @return {number}
4
*/
5
var specialArray = function (nums) {
6
// step 1: sort
7
nums = nums.sort((a, b) => a - b);
8
// step 2: search
9
for (let i = nums.length; i >= 0; i--) {
10
// found:
11
if (bs(nums, i)) return i;
12
}
13
// not found:
14
return -1;
15
};
16

17
function bs(array, target) {
18
let left = 0;
19
let right = array.length - 1;
20

21
while (left <= right) {
22
const mid = Math.floor((left + right) / 2);
23
if (array[mid] < target) left = mid + 1;
24
else right = mid - 1;
25
}
26

27
const greaterThanTarget = array.length - left;
28

29
return greaterThanTarget === target;
30
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0