| 0 | 0 | 3 | 4 | 4 |
Input
Output
3
0 불가(중복)
1 가능
2 가능
3 가능 (Output)
4 불가(중복)
__ 보다 크거나 같은 값을 구하라
| 0 | 0 |
Input
Output
-1
0 불가(중복)
Input
Output
2
| 3 | 5 |
0 가능
1 가능
2 가능 (Output)
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}Input
Output
3
| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
Current
Output
0
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
Input
Output
3
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
Current
Output
0
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
Input
Output
3
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
Current
Output
0
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
Input
Output
3
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
Current
Output
0
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
Input
Output
3
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
Current
Output
0
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
Input
Output
3
/**
* @param {number[]} nums
* @return {number}
*
* time: O(n log n)
* space: O(1)
*/
var specialArray = function (nums) {
const N = nums.length;
nums.sort((a, b) => a - b);
for (let idx = 0; idx <= N; idx++) {
if (lowerBound(nums, idx) === (N - idx))
return idx;
}
return -1;
};
var lowerBound = function (nums, key) {
const N = nums.length;
let start = 0;
let end = N;
while (start < end) {
const mid = Math.floor((start + end) / 2);
if (nums[mid] < key)
start = mid + 1;
else
end = mid;
}
return start;
}| 0 |
| 0 |
| 3 |
| 4 |
| 4 |
Current
Output
2
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
deck
By Yongki Kim
deck
- 65