LeetCode 2808. 使循环数组所有元素相等的最少秒数,简单哈希

一、题目

1、题目描述

给你一个下标从 0 开始长度为 n 的数组 nums 。

每一秒,你可以对数组执行以下操作:

  • 对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。

注意,所有元素会被同时替换。

请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。

2、接口描述

class Solution {
public:int minimumSeconds(vector<int>& nums) {}
};

3、原题链接

2808. 使循环数组所有元素相等的最少秒数


二、解题报告

1、思路分析

我们知道最终状态是n个相同的数字x

那么对于初始状态到最终状态最少要操作几次呢?

我们发现每次能让每个x左右相邻数字也转化为x,这个操作是对整个数组中的x而言的

那么最多操作次数就是相邻两个x间的最大距离+1再除以二

我们哈希计数即可

2、复杂度

时间复杂度: O(N) 空间复杂度:O(N)

3、代码详解

class Solution {
public:int minimumSeconds(vector<int>& nums) {unordered_map<int,int> pre, cnt;for(int i = 0, n = nums.size(); i < n; i++)pre[nums[i]] = i - n;for(int i = 0, n = nums.size(); i < n; i++)cnt[nums[i]] = max(cnt[nums[i]], (i - pre[nums[i]]) / 2), pre[nums[i]] = i;int ret = INT_MAX;for(auto x : cnt)ret = min(ret, x.second);return ret == INT_MAX ? 0 : ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[计算机提升] 删除空间占用大的文件(夹)

5.3 删除空间占用大的文件(夹) 5.3.1 hiberfil.sys 说明&#xff1a; 该文件是系统休眠文件。 对策&#xff1a; 使用CMD命令&#xff1a;powercfg -h off关闭休眠&#xff0c;然后重启电脑后该文件则会自动删除。但是电脑以后没有了休眠功能。读者可以根据实际情况进行取舍。…

c++如何使用volatile关键字保证线程安全?explicit

volatile C中的volatile关键字是一种类型修饰符&#xff0c;用它声明的变量表示可以被某些编译器未知的因素更改&#xff0c;比如操作系统、硬件或者其他线程等。 使用volatile关键字可以防止编译器对该变量的访问进行优化&#xff0c;从而保证每次都从内存中读取或写入该变量…

element——loading加载效果

两种使用方式 1.直接在标签上使用 <div v-loading.fullscreen.lock"loading" element-loading-text"加载中......" element-loading-spinner"el-icon-loading " element-loading-background"#fff"> 指令 v-loading.fullscre…

Log4j Log4j2

前言 今天抽时间来把这个日志框架学学&#xff0c;毕竟经常用&#xff0c;虽然不用自己写&#xff0c;但是书到用时方恨少&#xff0c;技多不压身。而且最近我的 GUI 软件中有一个关于日志问题的希望学完能够感觉解决掉。 Log4j & Log4j2 Log4j2 是 Log4j 的升级版&#x…

从理论到实践,如何用TRIZ破解研发中的技术难题?

自科技飞速发展以来&#xff0c;技术问题层出不穷&#xff0c;成为许多企业和研究机构研发过程中难以突破的瓶颈。然而&#xff0c;有一个强大的工具&#xff0c;能帮助我们解决这些问题&#xff0c;那就是TRIZ。 一、TRIZ是什么 TRIZ&#xff0c;全称是"发明问题解决理…

【Java程序设计】【C00178】基于SSM的NBA球队管理系统(论文+PPT)

基于SSM的NBA球队管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的NBA球队管理系统 本系统分为前台用户和后台管理员2个功能模块。 前台用户&#xff1a;当游客打开系统的网址后&#xff0c;首先看到的就是首页…

AMC系列可编程智能电测仪表功能以及选型

功能&#xff1a; AMC 系列可编程智能电测仪表是针对电力系统、工矿企业、公用设施、智能大厦的电力监控需求而设计的智能仪表&#xff0c;它集成电力参数的测量(如单相或者三相的电流、电压、有功功率、无功功率、视在功率、频率、功率因数)以及电能监测和考核管理。采用高亮…

20240130在ubuntu20.04.6下给GTX1080安装最新的驱动和CUDA

20240130在ubuntu20.04.6下给GTX1080安装最新的驱动和CUDA 2024/1/30 12:27 缘起&#xff0c;为了在ubuntu20.4.6下使用whisper&#xff0c;以前用的是GTX1080M&#xff0c;装了535的驱动。 现在在PDD拼多多上了入手了一张二手的GTX1080&#xff0c;需要将安装最新的545的驱动程…

精细化客户管理,这篇文章教会您!

如何做好客户精细化管理? 对于企业来说&#xff0c;不止要做到客户拉新&#xff0c;同时&#xff0c;也要做到让新客户变成老客户&#xff0c;让客户多次高频次购买。否则客户如果只是来购买一次&#xff0c;客户回购率低&#xff0c;长期以往&#xff0c;那企业的生存资本&a…

kubernetes-快速部署一套k8s集群

1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式&#xff1a; kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 二进制包 从github下载发行…

《CSS3》田字网格背景(外实线内虚线)的实现

一、前言 记录一些有趣的CSS实现方式&#xff0c;总所周知&#xff0c;当一段效果可以通过CSS实现的时候&#xff0c;绝不使用Javascript来实现&#xff0c;因此记录一些有意思的CSS效果&#xff0c;一来是方便自己学习&#xff0c;另一来是方便以后在需要使用到的时候能快速找…

ubuntu18.04更换软件源

一、步骤 1. 备份原软件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup2. 修改软件源(源从下面找) sudo gedit /etc/apt/sources.list3. 更新软件源 sudo apt update二、现有软件源 1.官方自带源 #deb cdrom:[Ubuntu 18.04.6 LTS _Bionic Beaver_ - Rel…

async 与 awite

async 和 await 是 JavaScript 中用于处理异步操作的关键字。 async 函数是一个返回 Promise 对象的函数&#xff0c;它在函数体内部使用 await 来等待 Promise 对象执行结果。使用 async 函数可以让代码更加简洁易懂&#xff0c;避免了回调函数嵌套的问题。 例如&#xff1…

基于YOLOv8深度学习的水稻叶片病害智能诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Vue3使用vant检索组件van-search的坑

当清空按钮与检索按钮同时居右时&#xff0c;点击clear清空按钮事件时会同时触发click-right-icon事件,如下配置&#xff1a; <van-searchv-model"form.search"show-actionshape"round"left-icon""right-icon"search"placeholder&…

Python(19)Excel表格操作Ⅰ

目录 导包 读取EXCEL文件 1、获取worksheet名称 2、设定当前工作表 3、输出目标单元格数据 4、工作表.rows&#xff08;行&#xff09; 5、工作表.columns&#xff08;列&#xff09; 小结 导包 要想使用 python 操作 Excel 文件&#xff0c;应当导入 openpyxl 包。在…

03:华为云管理|云主机管理|云项目实战

华为云管理&#xff5c;云主机管理&#xff5c;云项目实战 安全组配置部署跳板机配置yum源&#xff0c;安装软件包优化系统服务安装配置ansible管理主机 模版镜像配置配置yum源&#xff0c;安装软件包优化系统 网站云平台部署实战华为云的负载均衡 安全组配置 设置安全组 云…

[GO]使用 CSTD(Code Self Test Development) 技术方式处理 error

背景知识 在以前使用 VC 开发代码时&#xff0c;微软提供了 ASSERT 和 VERIFY 宏&#xff0c;其在调试环境下能比较方便的发现问题。我基于此设计了 CSTD(Code Self Test Development) 和 API_VERIFY , COM_VERIFY 等宏帮助我开发了几乎 0bug 的 C/C 代码.在使用 go 语言开发时…

数据结构--树

一、树的基本术语 结点:树中的一个独立单元 结点的度:结点下分支的个数 树的度:树中所有结点中度的最大值 非终端结点:度不为0的结点 双亲和孩子:结点下的子树称为该结点的孩子.相应地,该结点称为孩子的双亲 兄弟:同一个双亲的孩子之间 祖先:从根到该结点所经分支上的所…

[NOIP2010 普及组] 接水问题

信息学奥赛一本通1950&#xff1a;【10NOIP普及组】接水问题 洛谷P1190 [NOIP2010 普及组] 接水问题 题解 【题目描述】 学校里有一个水房&#xff0c;水房里一共装有m个龙头可供同学们打开水&#xff0c;每个龙头每秒钟的供水量相等&#xff0c;均为1。 现在有n名同学准备接水…