< 문제 간단설명 >
양수만 존재하는 nums 배열이 주어진다.
x를 찾아서 반환하면 되는 문제인데, 이 x의 조건은 다음과 같다.
- nums 배열안에 존재하지 않는 수이다.
- x이상의 수가 정확히 x개 존재해야 한다.
만약 x가 존재할 수 없다면 -1을 반환하면 된다.
[ 풀이 1 - 단순 구현 ]
/**
* @param {number[]} nums
* @return {number}
*/
const specialArray = (nums) => {
const sortedNumberList = [...nums].sort((a, b) => a - b);
const min = 0;
const max = sortedNumberList.at(-1);
for (let x = max; x > min; x--) {
let count = 0;
for (let i = 0; i < sortedNumberList.length; i++) {
const cur = sortedNumberList[i];
if (x <= cur) {
count++;
}
}
if (count === x) {
return x;
}
}
return -1;
};
[ 풀이 2 - 이분 탐색 ]
/**
* @param {number[]} nums
* @return {number}
*/
var specialArray = function (nums) {
const sortedNumberList = nums.sort((a, b) => a - b);
let left = 0;
let right = sortedNumberList.at(-1);
while (left <= right) {
const mid = Math.floor((left + right) / 2);
let count = 0;
for (let i = 0; i < sortedNumberList.length; i++) {
if (sortedNumberList[i] >= mid) {
count++;
}
}
if (mid === count) {
return mid;
}
if (count > mid) {
left = mid + 1;
continue;
}
if (count < mid) {
right = mid - 1;
continue;
}
}
return -1;
};
'PS > LeetCode' 카테고리의 다른 글
LeetCode / Array / 260번 / Single Number ||| / JS (0) | 2024.05.31 |
---|---|
LeetCode / Array / 1442번 / Count Triplets That Can Form Two Arrays of Equal XOR / JS (0) | 2024.05.30 |
LeetCode / Array / 661번 / Image Smoother / JS (0) | 2023.12.19 |
LeetCode / Array / 1582번 / Special Positions in a Binary Matrix / JS (0) | 2023.12.13 |