Shu-How Zの小窝

Loading...

剑指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

posted @ 2025-01-25 16:41  KooTeam  阅读(6)  评论(0)    收藏  举报