写点什么

2024-08-17:用 go 语言,给定一个从 0 开始的整数数组 nums 和一个整数 k, 每次操作可以删除数组中的最小元素。 你的目标是通过这些操作,使得数组中的所有元素都大于或等于 k。 请计算出实现这个目

  • 2024-08-17
    北京
  • 本文字数:770 字

    阅读完需:约 3 分钟

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:


chatgpt


题目来自 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 完整代码如下:

package main
import ( "fmt")
func minOperations(nums []int, k int) (ans int) { for _, x := range nums { if x < k { ans++ } } return}
func main() { nums := []int{2,11,10,1,3} k:=10 fmt.Println(minOperations(nums, k))}
复制代码


Python 完整代码如下:

# -*-coding:utf-8-*-
def min_operations(nums, k): ans = sum(1 for x in nums if x < k) return ans
nums = [2, 11, 10, 1, 3]k = 10print(min_operations(nums, k))
复制代码



发布于: 刚刚阅读数: 5
用户头像

公众号:福大大架构师每日一题 2021-02-15 加入

公众号:福大大架构师每日一题

评论

发布
暂无评论
2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k, 每次操作可以删除数组中的最小元素。 你的目标是通过这些操作,使得数组中的所有元素都大于或等于k。 请计算出实现这个目_福大大架构师每日一题_福大大架构师每日一题_InfoQ写作社区