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

ROS2理论与实践_宇树机器人Go2开发指南(文字) 本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。 阅读详情

Every day a Leetcode

题目来源:2808. 使循环数组所有元素相等的最少秒数

解法1:哈希 + 枚举

假设答案是数组 nums 的一个元素 x,因为每个 x 每一秒可以把它旁边的两个数变成 x,所以如果两个 x 之间还有 k 个元素,那么 ⌈k/2⌉ 秒之后这些元素就可以全部变成 x。

因此把答案变成 x 需要的时间,就是两个 x 之间最多有几个元素,把元素数量除以 2 上取整。枚举所有 x,选出最优答案即可。

代码:

/*
 * @lc app=leetcode.cn id=2808 lang=cpp
 *
 * [2808] 使循环数组所有元素相等的最少秒数
 */

// @lc code=start
class Solution
{
public:
    int minimumSeconds(vector<int> &nums)
    {
        // 特判
        if (nums.size() <= 1)
            return 0;

        int n = nums.size();
        // mp[x] 表示所有等于 x 的元素下标
        unordered_map<int, vector<int>> mp;
        for (int i = 0; i < n; i++)
            mp[nums[i]].push_back(i);

        int ans = INT_MAX;
        for (auto &[_, vec] : mp)
        {
            // 计算最终元素为 x = p.first 的情况下需要的时间
            int max_gap = 0;
            for (int i = 0; i < vec.size(); i++)
            {
                // 计算两个 x 之间的元素数量
                int gap = 0;
                // 注意序列是环形的
                if (i + 1 < vec.size())
                    gap = vec[i + 1] - vec[i] - 1;
                else
                    gap = n - 1 - vec[i] + vec[0];
                max_gap = max(max_gap, gap);
            }
            // 需要的时间,就是元素的最大间隔,除以 2 上取整
            ans = min(ans, (max_gap + 1) / 2);
        }
        return ans;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 nums 的元素个数。

空间复杂度:O(n),其中 n 是数组 nums 的元素个数。

2025年三级等保新规实战:从零开始搭建企业安全防护体系(附完整配置清单) 本文详细解析2025年三级等保新规的核心变化,提供从零开始搭建企业安全防护体系的实战指南。重点介绍动态防护能力、实战化攻防验证和全链路数据保护等关键要求,并附完整配置清单,帮助企业高效合规。 阅读详情

相关推荐

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第一部分:AI遥感工程师的基础设施与工具链-文章 4:传统遥感分析与机器学习基线

本章将系统性地介绍经典遥感分析工作流,从数据预处理到多维度特征工程,再到如何利用经典的机器学习模型(如随机森林、支持向量机)进行监督与非监督学习。我们将通过一个完整的“智慧农业作物分类”项目实战,展示如何利用我们之前构建的数据湖和工具链,从原始数据到最终的分析结果,构建一个性能可靠、可解释性强的基线系统。更重要的是,我们将深入剖析这种传统方法的局限性,从而为后续章节引入遥感大模型的必要性提供强有力的论证。

panshengwu的博客 705

Leetcode 第 338 场周赛 Problem C 使数组元素全部相等的最少操作次数

Leetcode 第 338 场周赛 Problem C 使数组元素全部相等的最少操作次数 * 题目: * 给你一个正整数数组 nums 。 * 同时给你一个长度为 m 的整数数组 queries 。第 i 个查询中,你需要将 nums 中所有元素变成 queries[i] 。你可以执行以下操作 任意 次: * 将数组里一个元素 增大 或者 减小 1 。 * 请你返回一个长度为 m 的数组 answer ,其中 answer[i]是将 nums 中所有元素变成 queries[i] 的 最少 操作次

专注如一的博客 447

STM32F407串口DMA收发实战:标准库配置与环形缓冲区实现

DMA(直接存储器访问)是嵌入式系统中提升数据传输效率的核心技术,它允许外设与内存直接交换数据而无需CPU干预。其工作原理是通过专用硬件控制器接管数据搬运任务,CPU仅需初始化传输参数即可处理其他事务,从而显著降低系统负载。这项技术的核心价值在于释放CPU算力,实现高吞吐、低延迟的实时通信,尤其适用于数据采集、工业控制和通信网关等场景。在STM32F407等ARM Cortex-M4芯片中,串口结合DMA可实现稳定的高速数据流处理。本文以STM32F407标准库为基础,深入解析USART1的DMA发送与接收

weixin_29169899的博客 317

LeetCode 1551. 使数组中所有元素相等的最小操作数

题目链接:1551. 使数组中所有元素相等的最小操作数 题意: 存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n )。 一次操作中,你可以选出两个下标,记作 x 和 y ( 0 <= x, y < n )并使 arr[x] 减去 1 、arr[y] 加上 1 (即 arr[x] -=1 且 arr[y] += 1 )。最终的目标是使数组中的所有元素都 相等 。题目测试用例将会 保证 :在执行若干步操作后,...

error311的博客 674

关于VS2022创建winform窗体后择项或选择工具箱项加载visionPro控件卡住,窗口未响应解决方法

解决winform加载工具箱选择项卡死问题

xiaokiss_的博客 3210

SAP FICO实操:如何修改已发生业务数据的成本中心公司代码(附RKACOR06程序运行指南)

本文详细解析了SAP FICO系统中使用RKACOR06程序修改已发生业务数据的成本中心和公司代码的实操方法。通过实战案例分享,提供从前期准备到后期验证的全流程指南,帮助企业应对组织架构重组或财务核算体系调整时的数据迁移挑战,特别适用于跨公司代码的成本中心划转场景。

weixin_27303545的博客 189

【算法】【环形数组处理技巧、枚举】力扣2808. 使循环数组所有元素相等的最少秒数

这道题目考验了我们对循环数组以及枚举技巧的理解。通过将循环数组转换为线性数组,我们简化了问题的复杂度。第一眼,我的思路是用BFS模拟搜索,后面我发现用BFS复杂度偏高;第二眼,其实直接枚举的复杂度与直接模拟操作 + BFS相比要低很多。所以说,尽管“枚举”一词听起来不那么高级,但是善用枚举却能帮助我们更快速甚至更高效地解决问题。

未来就在脚下。 1258

从贝叶斯网络到结构因果模型:因果推理在可解释AI中的实践

在机器学习和数据分析领域,理解变量间的因果关系而不仅仅是统计关联,是构建可信赖、可解释系统的关键。概率图模型,特别是贝叶斯网络,通过有向无环图和条件概率表,能够高效地编码和推理变量间的条件依赖关系,广泛应用于医疗诊断、风险评估等场景。然而,贝叶斯网络主要刻画的是“是什么”的关联,难以回答“如果…会怎样”的因果问题。为了进行因果推断,需要引入结构因果模型和do-演算,它们通过定义结构方程和模拟干预操作,能够区分混杂效应,估计处理变量对结果变量的净因果影响。这一套方法论对于可解释人工智能至关重要,它能生成反事实

weixin_42168902的博客 379

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

LeetCode 2808.使循环数组所有元素相等的最少秒数 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒,你可以对数组执行以下操作: 对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。 注意,所有元素会被同时替换。 请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。

<font color="Pink">Tisfy的博客</font> 1042

当几何失效时:3D激光SLAM退化场景的本质与应对策略

本文探讨了3D激光SLAM在退化场景(如长廊、隧道等)中的挑战与解决方案。文章从数学角度分析了退化原因,指出信息矩阵秩亏导致某些方向约束缺失。主流算法采用不同策略应对:LeGO-LOAM利用地面约束与解耦优化;LIO-SAM/LVI-SAM通过多传感器融合补偿;FAST-LIO系列依赖IMU短期积分。新兴的RID-LIO方案创新性地利用激光强度信息增强约束,实验显示精度提升63.59%。研究表明,针对不同退化方向需要采用特异性补偿策略,而挖掘现有传感器的潜在信息维度是提升鲁棒性的有效途径。

Studying…… 618

基于 YOLOv26 的高速抛物识别系统:微小目标检测

本文提出了一种基于YOLOv26的高速抛物识别系统,专注于微小目标检测。系统采用多模块协同架构,包括视频预处理、YOLOv26检测、目标跟踪和抛物行为分析等模块。关键技术包括YOLOv26s模型检测、DeepSORT目标跟踪和边缘计算部署。通过构建包含多种抛物类型的专业数据集,并应用数据增强技术提升模型性能。系统实现了车辆检测、微小抛物目标识别、抛物轨迹分析和风险等级评估等功能,可实时检测高速公路上的抛物行为并触发告警,为交通管理提供智能化解决方案。

一键难忘的博客 632

每日打卡 力扣2808 使循环数组所有元素相等的最少秒数

第 1 秒,将每个位置的元素分别变为 [nums[0],nums[2],nums[2],nums[2],nums[3]]。变化后,nums = [2,3,3,3,3]。- 第 2 秒,将每个位置的元素分别变为 [nums[1],nums[1],nums[2],nums[3],nums[4]]。变化后,nums = [3,3,3,3,3]。- 第 1 秒,将每个位置的元素分别变为 [nums[3],nums[1],nums[3],nums[3]]。变化后,nums = [2,2,2,2]。

kawhixiao的博客 579

Win10 系统下VisualStudio2022 配置Open3D-0.18.0(C++)

Win10 系统下VisualStudio2022 配置Open3D-0.18.0

点云侠的博客 2655

​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数

第 1 秒,将每个位置的元素分别变为 [nums[0],nums[2],nums[2],nums[2],nums[3]]。变化后,nums = [2,3,3,3,3]。- 第 2 秒,将每个位置的元素分别变为 [nums[1],nums[1],nums[2],nums[3],nums[4]]。变化后,nums = [3,3,3,3,3]。- 第 1 秒,将每个位置的元素分别变为 [nums[3],nums[1],nums[3],nums[3]]。变化后,nums = [2,2,2,2]。

分享+记录 905

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

每日一题

想要AC的sjh的博客空间 463

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

给你一个下标从 0 开始长度为 n 的数组 nums。每一秒,你可以对数组执行以下操作:对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。注意,所有元素会被同时替换。请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。

ResumeProject的博客 378

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

简单哈希

EQUINOX1的博客 580

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

因此,我们可以用一个哈希 map 存储相同元素的所有下标,然后计算相邻坐标之间的差值,得到全局的最大距离最小。仔细观察可以发现,这道题可以转为求循环数组中,相同元素x,之间邻接的最大距离最小。请你返回将数组 nums 中所有元素变成相等元素所需要的。给你一个下标从 0 开始长度为 n 的数组 nums。,所有元素会被同时替换。

qq_45931691的博客 451

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

我们首先用哈希表,统计nums中相同的数出现的位置,mp[x]表示x所出现的位置。然后我们研究,使得数组全部变成x所需要的时间,这个时间取决于nums中,相邻x的最大距离。我们一次枚举所有相邻(包括头尾)x的索引值,找到最大的距离。最大距离除以二并向下取整,就是使得数组全部变成x所需要得时间。最后我们对所有nums中得数都找到所需得时间,返回其中得最小值即可。

weixin_53908842的博客 367

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

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

H_Q_Li的博客 584

【Py/Java/C++三种语言详解】LeetCode每日一题240130【哈希表】LeetCode2808、使循环数组所有元素相等的最少秒数

有LeetCode算法、华为OD考试扣扣交流群可加**:948025485**可上全网独家的练习华子OD、大厂真题绿色聊天软件戳od1336了解算法冲刺训练。

weixin_48157259的博客 1236

LeetCode 2808. 使循环数组所有元素相等的最少秒数(哈希表、数组)

【代码】LeetCode 2808. 使循环数组所有元素相等的最少秒数(哈希表、数组)

记录一些刷过的题并分享学习心得 265

wy的leetcode刷题记录_Day78

wy的leetcode刷题记录_Day78声明前言2808. 使循环数组所有元素相等的最少秒数题目介绍思路代码收获你一个下标从 0 开始长度为 n 的数组 nums。每一秒,你可以对数组执行以下操作:对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。注意,所有元素会被同时替换。请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。

m0_54015435的博客 456

leetcode-2808-使循环数组所有元素相等的最少秒数-c++

题目地址。

LinShaoQINg's_bloGGGGG 254

[LeetCode110双周赛&LeetCode357周赛] 2808. 使循环数组所有元素相等的最少秒数,2811. 判断是否能拆分数组

[LeetCode110双周赛&LeetCode357周赛] 2808. 使循环数组所有元素相等的最少秒数 2811. 判断是否能拆分数组

负负得正的博客 321

【数组】【最长距离】使循环数组所有元素相等的最少秒数

给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒,你可以对数组执行以下操作: 对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。 注意,所有元素会被同时替换。 请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。

闻缺陷则喜何志丹 756

算法每日一题: 使用循环数组所有元素相等的最少秒数 | 哈希

读题,我们可以知道,一个元素,一次可以将相邻的两个元素下标变为自己的,所以每一秒我们可以影响相邻元素。大家好,我是星恒,今天给大家带来的是一道需要感觉规律的题目,只要读懂题目中的规律,就可以做出来了。好啦,今天的每日一题到这里就结束了,如果大家觉得有用,可以可以给我一个小小的赞呢,我们下期再见!如果大家有什么思考和问题,可以在评论区讨论,也可以私信我,很乐意为大家效劳。也就是说,变成相等元素所需要的 最少 秒数,就是两个相邻相同元素的。这样做的目的是可以让首尾相连,感觉首元素和尾元素相邻了。

m0_61780691的博客 1170
上一篇: Leetcode 第 110 场双周赛题解
下一篇: 2825. 循环增长使字符串子序列等于另一个字符串
UestcXiye
博客等级 码龄8年 9028粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值