力扣--LCR 159.库存管理III

题目

仓库管理员以数组 stock 形式记录商品库存表,其中 stocki 表示对应商品库存余量。请返回库存余量最少的 cnt 个商品余量,返回 顺序不限。

示例 1:

输入:stock = 2,5,7,4, cnt = 1

输出:2

示例 2:

输入:stock = 0,2,3,6, cnt = 2

输出:0,22,0

提示:

复制代码
0 <= cnt <= stock.length <= 10000

	0 <= stock[i] <= 10000

代码

class Solution {

public int\[\] inventoryManagement(int\[\] arr, int k) {

if(arr == null || arr.length == 0 || k == 0){

return new int0;

}

复制代码
    return quickFind(arr, 0, arr.length - 1, k);
}
int[] quickFind(int[] arr, int left, int right, int k){
    int i = partition(arr, left, right);
    if(i + 1 == k){
        return Arrays.copyOf(arr, k);
    }

    if(i + 1 > k){
        return quickFind(arr, 0, i - 1, k);
    } else {
        return quickFind(arr, i + 1, right, k);
    }
}

int partition(int[] arr, int left, int right){
    int pivot = arr[left];

    int i = left + 1;
    int j = right;

    while(i < j){
        while(i <= j && arr[i] <= pivot) i++;
        while(i <= j && arr[j] >= pivot) j--;
        if(i >= j){
            break;
        }

        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    arr[left] = arr[j];
    arr[j] = pivot;
    return j;

}

}

时间复杂度:O(n)

空间复杂度:O(logn),平均递归调用深度

相关推荐
通信小呆呆1 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben0441 天前
强化学习之DQN算法族(基于gymnasium开发)
算法
小小工匠1 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾1 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..1 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
想吃火锅10051 天前
【leetcode】88.合并两个有序数组js
算法
生成论实验室1 天前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Qres8211 天前
算法复键——树状数组
数据结构·算法
H178535090961 天前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks