剑指Offer 40.最小的k个数 / LCR 159. 库存管理 III
剑指Offer 40.最小的k个数 / LCR 159. 库存管理 III
/冒泡排序,从小到大,找出来k个数、并返回
// map arr map+数组:map记录每个元素出现的次数/频率;数组进行排序
var inventoryManagement = function(stock, cnt) {
stock.sort((a,b)=>a-b);
return stock.slice(0,cnt)
};
// console.log(inventoryManagement([2,5,7,4], 1));
// console.log(inventoryManagement([0,2,3,6], 2));
// console.log(inventoryManagement([3,2,1], 2));
console.log(inventoryManagement([0,1,2,1], 1));
Array.prototype.quickSort = function () {
// 检查输入是否为数组
if (!Array.isArray(this)) {
throw new TypeError('Input must be an array');
}
const rec = (arr, left, right) => {
if (left >= right) return;
// 选择基准元素(使用三数取中法)
const pivotIndex = Math.floor((left + right) / 2);
[arr[left], arr[pivotIndex]] = [arr[pivotIndex], arr[left]];
const pivot = arr[left];
let i = left + 1;
let j = right;
while (i <= j) {
while (i <= j && arr[i] < pivot) i++;
while (i <= j && arr[j] > pivot) j--;
if (i <= j) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
j--;
}
}
[arr[left], arr[j]] = [arr[j], arr[left]];
rec(arr, left, j - 1);
rec(arr, i, right);
};
rec(this, 0, this.length - 1);
return this;
};
/**
* @param {number[]} stock
* @param {number} cnt
* @return {number[]}
*/
var inventoryManagement = function(stock, cnt) {
stock.quickSort()
return stock.slice(0,cnt)
};
2

浙公网安备 33010602011771号