알고리즘
Leetcode - Kth Largest Element in an Array(215)
rockettttman
2021. 3. 5. 13:36
JS heap priority queue
- javascript 로 heap 우선순위 큐 알고리즘 풀이
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function(nums, k) {
if(nums.length == 1) {
return nums[0];
}
//k가 1일 때 nums Array에서 바로 max값 return
if(k === 1) {
var maxNum = 0;
return nums.reduce((bef, cur) => {
console.log(bef + ", " + cur)
return max = Math.max(maxNum, bef, cur)
});
}
var queue;
for(var i=0; i<k-1; i++) {
queue = [];
heapSort(queue, nums);
var max = queue.splice(0, 1)[0];
var maxIdx = nums.findIndex(num => num===max);
nums.splice(maxIdx, 1);
}
return queue[0];
};
function heapSort(queue, nums) {
for(var i=0; i<nums.length; i++) {
var idx = i;
if(i == 0) {
queue.push(nums[i]);
continue;
}
while(idx > 0 && queue[Math.floor(idx/2)] < nums[i]) {
if(queue[Math.floor(idx/2)] > nums[i]) {
break;
}else {
idx = Math.floor(idx/2);
}
}
queue.splice(idx, 0, nums[i]);
}
}