2026/4/11 leetcode 3741

我是足够聪明的,我肯定是可以每天写一道每日一题的。可以用 O(n)O(n)O(n) 的时间和 O(n)O(n)O(n) 的空间算出来。这个距离是 2 倍的 k - i ,实际上是一个数学推导,这里感觉可以卡掉不少人。感觉还是挺不错的。现在开始每天尽量刷一个题,这样的话,其实可以写不少的题了。还是挺爽的。最怕的是积累。积累是很难速成的。感觉非常不错。这里这个数学推导也可以说一下,就是,下标的大小关系是确定的,也就是说,绝对值可以直接去掉,然后消掉一个未知数,只和第一个下标与最后一个下标相关,我们只需要选择最紧凑的就可以了。最小的下标。就是这个意思。哈希表反正是常数时间查询。我们消耗的时间就是一个线性的时间。消耗的空间也就是一个线性的空间。然后好像就没有啥问题了。

cpp 复制代码
#include<climits>
class Solution {
public:
    int minimumDistance(vector<int>& nums) {
        int min_dist = INT_MAX;
        unordered_map<int, vector<int>> pos;
        for ( int i = 0; i < nums.size(); i++ ) {
            pos[nums[i]].push_back( i );
        }
        for ( auto& [num, idx_list]: pos ) {
            int m = idx_list.size();
            if ( m >= 3 ) {
                for ( int i = 2; i < m; i++ ) {
                    int dist = 2 * ( idx_list[i] - idx_list[i - 2] );
                    min_dist = min( min_dist, dist );
                }
            }
        }
        return min_dist == INT_MAX? -1: min_dist;
    }
};
相关推荐
mCell19 小时前
Lua 编程入门:从基础语法到元表
javascript·算法·lua
wuyk55521 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无21 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
不会代码的小猴1 天前
3. 控件学习1
开发语言·c++·笔记·qt·算法
疯狂打码的少年1 天前
【数据结构】图的存储结构:邻接矩阵与邻接表
数据结构·笔记
203号居民1 天前
LeetCode hot 100 —41. 缺失的第一个正数
数据结构·算法·leetcode
专注仿真1 天前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
evans在进步1 天前
LeetCode 322:零钱兑换——Java 动态规划详解
java·leetcode·动态规划
地平线开发者1 天前
量化为什么会有损失:从量化误差到精度下降
算法