仓库管理员以数组 stock 形式记录商品库存表,其中 stock[i] 表示对应商品库存余量。请返回库存余量最少的 cnt 个商品余量,返回 顺序不限。
示例 1:
输入:stock = [2,5,7,4], cnt = 1
输出:[2]
示例 2:
输入:stock = [0,2,3,6], cnt = 2
输出:[0,2] 或 [2,0]
var inventoryManagement = function(stock, cnt) {
return partition(stock, 0, stock.length - 1, cnt)
};
var partition = function(stock, left, right, cnt) {
if (left >= right) {
return stock.slice(0, cnt)
}
let pivot = left + Math.floor(Math.random() * (right - left + 1));
let pivotVal = stock[pivot];
[stock[pivot], stock[left]] = [stock[left], stock[pivot]];
let i = left + 1;
let j = right;
while (i <= j) {
while (i <= j && stock[i] < pivotVal) {
i++;
}
while (i <= j && stock[j] > pivotVal) {
j--;
}
if (i <= j) {
[stock[i], stock[j]] = [stock[j], stock[i]];
i++;
j--;
}
}
[stock[left], stock[j]] = [stock[j], stock[left]];
if (cnt <= j) {
return partition(stock, left, j, cnt);
} else {
return partition(stock, j + 1, right, cnt )
}
}