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

LeetCode每日一题 | 2808. 使循环数组所有元素相等的最少秒数

文章目录

    • 题目描述
    • 问题分析
    • 程序代码

题目描述

原题链接

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

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

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

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

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

问题分析

仔细观察可以发现,这道题可以转为求循环数组中,相同元素x,之间邻接的最大距离最小。

因此,我们可以用一个哈希 map 存储相同元素的所有下标,然后计算相邻坐标之间的差值,得到全局的最大距离最小mx

最终的结果就是mx / 2,即向下取整。

程序代码

class Solution {
public:int minimumSeconds(vector<int>& nums) {unordered_map<int, vector<int>> mp;int n = nums.size(), res = n;for(int i = 0; i < n; i++) {mp[nums[i]].push_back(i);}for(auto t : mp) {int mx = t.second[0] + n - t.second.back();for(int i = 1; i < t.second.size(); i++) {mx = max(mx, t.second[i] - t.second[i-1]);}res = min(res, mx / 2);}return res;}
};

相关文章:

  • 搭建幻兽帕鲁需要什么样的服务器
  • 工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
  • 【蓝桥杯冲冲冲】进阶搜索 Anya and Cubes
  • 医院安全(不良)事件报告系统源码,不良事件处理的全过程管理,实现11大类不良事件类型的报告上报、流转审批、跟踪改进及统计分析功能。
  • Java后端须知的前端知识
  • 2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷9
  • FutureTask底层实现分析
  • jquery的9大选择器
  • C++面试:表结构设计规范
  • 腾讯云SDK并发调用优化方案
  • 迅为LS2K0500开发板引出PCI接口,可扩展显卡、网卡、声卡、视频卡、SATARAID等
  • 突破编程_C++_面试(基础知识(一))
  • LeetCode2670. Find the Distinct Difference Array
  • Golang 流媒体服务器lalserver使用指南
  • Wpf 使用 Prism 实战开发Day16
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Android交互
  • CentOS7 安装JDK
  • conda常用的命令
  • Hibernate最全面试题
  • Java 最常见的 200+ 面试题:面试必备
  • java中具有继承关系的类及其对象初始化顺序
  • JS数组方法汇总
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 记录一下第一次使用npm
  • 聊聊flink的TableFactory
  • 聊聊hikari连接池的leakDetectionThreshold
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端面试题总结
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 手机端车牌号码键盘的vue组件
  • 算法-图和图算法
  • 原生Ajax
  • No resource identifier found for attribute,RxJava之zip操作符
  • elasticsearch-head插件安装
  • 正则表达式-基础知识Review
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • ${factoryList }后面有空格不影响
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (二)PySpark3:SparkSQL编程
  • (二开)Flink 修改源码拓展 SQL 语法
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (全注解开发)学习Spring-MVC的第三天
  • (三)c52学习之旅-点亮LED灯
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • ./configure,make,make install的作用
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net Core 中间件与过滤器