什么網(wǎng)站可以做醫(yī)療設(shè)備的十大少兒編程教育品牌
給你一個下標(biāo)從 0 開始的整數(shù)數(shù)組 nums 和一個整數(shù) k 。
一次操作中,你可以刪除 nums 中的最小元素。
你需要使數(shù)組中的所有元素都大于或等于 k ,請你返回需要的 最少 操作次數(shù)。
示例 1:
輸入:nums = [2,11,10,1,3], k = 10
輸出:3
解釋:第一次操作后,nums 變?yōu)?[2, 11, 10, 3] 。
第二次操作后,nums 變?yōu)?[11, 10, 3] 。
第三次操作后,nums 變?yōu)?[11, 10] 。
此時,數(shù)組中的所有元素都大于等于 10 ,所以我們停止操作。
使數(shù)組中所有元素都大于等于 10 需要的最少操作次數(shù)為 3 。
示例 2:
輸入:nums = [1,1,2,4,9], k = 1
輸出:0
解釋:數(shù)組中的所有元素都大于等于 1 ,所以不需要對 nums 做任何操作。
示例 3:
輸入:nums = [1,1,2,4,9], k = 9
輸出:4
解釋:nums 中只有一個元素大于等于 9 ,所以需要執(zhí)行 4 次操作。
提示:
1 <= nums.length <= 50
1 <= nums[i] <= 109
1 <= k <= 109
輸入保證至少有一個滿足 nums[i] >= k 的下標(biāo) i 存在。
法一:直接模擬:
class Solution {
public:int minOperations(vector<int>& nums, int k) {int ans = 0;for (int num : nums){ans += num < k;}return ans;}
};
如果nums的長度為n,此算法時間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。
法二:用標(biāo)準(zhǔn)庫:
class Solution {
public:int minOperations(vector<int>& nums, int k) {return count_if(nums.begin(), nums.end(), [k] (int a) { return a < k; });}
};
如果nums的長度為n,此算法時間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。