当前位置: 首页 > news >正文

国内专业网站制作贺州住房和城乡建设部网站

国内专业网站制作,贺州住房和城乡建设部网站,app是什么意思通俗讲,做网站哪便宜【LetMeFly】3375.使数组的值全部为 K 的最少操作次数:O(1)空间——排序一次遍历 力扣题目链接:https://leetcode.cn/problems/minimum-operations-to-make-array-values-equal-to-k/ 给你一个整数数组 nums 和一个整数 k 。 如果一个数组中所有 严格…

【LetMeFly】3375.使数组的值全部为 K 的最少操作次数:O(1)空间——排序+一次遍历

力扣题目链接:https://leetcode.cn/problems/minimum-operations-to-make-array-values-equal-to-k/

给你一个整数数组 nums 和一个整数 k 。

如果一个数组中所有 严格大于 h 的整数值都 相等 ,那么我们称整数 h 是 合法的 。

比方说,如果 nums = [10, 8, 10, 8] ,那么 h = 9 是一个 合法 整数,因为所有满足 nums[i] > 9 的数都等于 10 ,但是 5 不是 合法 整数。

你可以对 nums 执行以下操作:

  • 选择一个整数 h ,它对于 当前 nums 中的值是合法的。
  • 对于每个下标 i ,如果它满足 nums[i] > h ,那么将 nums[i] 变为 h 。

你的目标是将 nums 中的所有元素都变为 k ,请你返回 最少 操作次数。如果无法将所有元素都变 k ,那么返回 -1 。

 

示例 1:

输入:nums = [5,2,5,4,5], k = 2

输出:2

解释:

依次选择合法整数 4 和 2 ,将数组全部变为 2 。

示例 2:

输入:nums = [2,1,2], k = 2

输出:-1

解释:

没法将所有值变为 2 。

示例 3:

输入:nums = [9,7,5,3], k = 1

输出:4

解释:

依次选择合法整数 7 ,5 ,3 和 1 ,将数组全部变为 1 。

 

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100
  • 1 <= k <= 100

解题方法:排序+遍历

这是一道阅读理解题。

先将数组从大到小排个序,若最小值小于 k k k则直接返回 − 1 -1 1,否则继续。

从(第二个元素开始)前到后遍历数组,若当前元素与上一个元素不同,则需要将上一个元素(和所有与之相等的元素)经过一次操作变成当前元素,操作次数加一。

最终(遍历完成后),数组中所有值都会变成 k k k。如果最小值不是 k k k,则还需要额外的一次变换将所有值都变成 k k k

  • 时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn),其中 n = l e n ( n u m s ) n=len(nums) n=len(nums)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-04-09 21:58:45* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-09 22:08:39*/
#if defined(_WIN32) || defined(__APPLE__)
#include "_[1,2]toVector.h"
#endifclass Solution {
public:int minOperations(vector<int>& nums, int k) {sort(nums.begin(), nums.end(), greater<int>());if (nums.back() < k) {return -1;}int ans = 0;for (int i = 1; i < nums.size(); i++) {if (nums[i] != nums[i - 1]) {printf("nums[%d] = %d, nums[%d] = %d, ans = %d, ans++\n", i, nums[i], i - 1, nums[i - 1], ans);  // ****ans++;}}return ans + (nums.back() != k);}
};
Python
'''
Author: LetMeFly
Date: 2025-04-09 22:09:48
LastEditors: LetMeFly.xyz
LastEditTime: 2025-04-09 22:10:06
'''
from typing import Listclass Solution:def minOperations(self, nums: List[int], k: int) -> int:nums.sort(reverse=True)if nums[-1] < k:return -1ans = 0for i in range(1, len(nums)):if nums[i] != nums[i - 1]:ans += 1return ans + (nums[-1] != k)
Java
/** @Author: LetMeFly* @Date: 2025-04-09 22:12:36* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-09 22:15:42*/
import java.util.Arrays;class Solution {public int minOperations(int[] nums, int k) {Arrays.sort(nums);if (nums[0] < k) {return -1;}int ans = 0;for (int i = nums.length - 1; i > 0; i--) {if (nums[i] != nums[i - 1]) {ans++;}}if (nums[0] != k) {ans++;}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-04-09 22:16:49* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-09 22:18:14*/
package mainimport "slices"func minOperations(nums []int, k int) (ans int) {slices.Sort(nums)if nums[0] < k {return -1}for i := len(nums) - 1; i > 0; i-- {if nums[i] != nums[i - 1] {ans++}}if nums[0] != k {ans++}return
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

http://www.dtcms.com/a/534262.html

相关文章:

  • Python 列表排序:快速掌握排序方法
  • 在盐城做网站的网络公司电话网站开发 参考文献
  • 奉化区建设局网站贵州省贵州省建设厅网站
  • 网站规划文案做移动网站优化
  • 郑州网站权重京东官方网上商城
  • C++ 类的学习(四) 继承
  • 企业网站建设开发四个阶段厦门企业网站排名优化
  • 深圳微商城网站制作多少钱郑州网站设计 郑州网站开发
  • 成都网站设计网站制作公司互联网门户网站建设
  • 国际网站怎么进免费分销方案如何打造更强的分销团队
  • 衡水制作网站哪些网站能够免费做公考题
  • 唐山网站制作系统做企业网站首页尺寸
  • 郑州哪家公司给国外做网站毛坯房最便宜装修方法
  • 电影网站开发任务书北京大型网站建设公司
  • 怎样选择网站服务器求职设计师的个人简历模板
  • 阿里云部署一个自己做的网站吗网站建设需要哪些成本
  • 多点网络网站制作系统网站备案服务内容
  • 上海网站排名seo公司哪家好苏州建筑设计公司
  • 【C++篇】C++11:右值引用与移动语义
  • 红色博客网站源码中交建设集团网站
  • 西安网站建设哪家好一些农业局网站建设方案
  • 知乎 淘宝网站建设php英文商城网站建设
  • 建设工程信息发布网站用h5开发的网站模板下载
  • 免费源码交易网站源码廊坊建站
  • 当.NET 9遇见AI智能体:AntSK企业级知识库的技术革命与实战解析
  • 哪个网站做长图免费转高清高端网站建设个人
  • 海原网站建设在线代理上网
  • 网上购物网站模板安装wordpress 403
  • 郑州官网seo推广上海网站自然排名优化价格
  • 如何查看网站开发公司《新闻联播》正在直播