2024-08-17:用 go 语言,给定一个从 0 开始的整数数组 nums 和一个整数 k, 每次操作可以删除数组中的最小元素。 你的目标是通过这些操作,使得数组中的所有元素都大于或等于 k。 请计算出实现这个目
2024-08-17:用 go 语言,给定一个从 0 开始的整数数组 nums 和一个整数 k,
每次操作可以删除数组中的最小元素。
你的目标是通过这些操作,使得数组中的所有元素都大于或等于 k。
请计算出实现这个目标所需的最少操作次数。
输入:nums = [2,11,10,1,3], k = 10。
输出:3。
解释:第一次操作后,nums 变为 [2, 11, 10, 3] 。
第二次操作后,nums 变为 [11, 10, 3] 。
第三次操作后,nums 变为 [11, 10] 。
此时,数组中的所有元素都大于等于 10 ,所以我们停止操作。
使数组中所有元素都大于等于 10 需要的最少操作次数为 3 。
答案 2024-08-17:
题目来自 leetcode3065。
大体步骤如下:
1.遍历数组nums
,对于元素小于 k 的情况,将操作次数ans
加 1。
2.在给定例子中,初始时nums
为[2, 11, 10, 1, 3],k 为 10。第一次操作后,删除最小元素 1,得到[2, 11, 10, 3],操作次数为 1。
3.第二次操作后,删除最小元素 2,得到[11, 10, 3],操作次数为 2。
4.第三次操作后,删除最小元素 3,得到[11, 10],操作次数为 3。
5.此时数组中的所有元素都大于或等于 10,操作停止,使数组中所有元素大于等于 10 所需的最少操作次数为 3。
总的时间复杂度为 O(n),其中 n 为数组nums
的长度,每个元素最多会被遍历一次。
总的额外空间复杂度为 O(1),没有使用额外的数据结构来存储中间结果,只有常数级别的额外空间消耗。
Go 完整代码如下:
Python 完整代码如下:
版权声明: 本文为 InfoQ 作者【福大大架构师每日一题】的原创文章。
原文链接:【http://xie.infoq.cn/article/0aed36cfb4db9553f0012c051】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论