Leetcode 3741. Minimum Distance Between Three Equal Elements II

  • [Leetcode 3741. Minimum Distance Between Three Equal Elements II](#Leetcode 3741. Minimum Distance Between Three Equal Elements II)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题是leetcode周赛475的第二题,是一个medium的题目,也是第一题3740. Minimum Distance Between Three Equal Elements I的一个复杂版本,不过两道题本质上只有复杂度要求上有一点区别。

这道题思路上并不难,只要将所有相同元素的位置记录下来,然后比较相连的三个元素的位置,取其绝对值只差的和的最小值即可。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def minimumDistance(self, nums: List[int]) -> int:
        locs = defaultdict(list)
        ans = math.inf
        for i, num in enumerate(nums):
            locs[num].append(i)
            if len(locs[num]) >= 3:
                ans = min(ans, 2*(i-locs[num][-3]))
        return ans if ans != math.inf else -1

提交代码评测得到:耗时371ms,占用内存47.88MB。

相关推荐
Tairitsu_H3 天前
[LC优选算法#4] 滑动窗口 | 串联所有单词的⼦串 | 最⼩覆盖⼦串
c++·算法·滑动窗口
Tairitsu_H5 天前
[LC优选算法#3] 滑动窗口 | 将x减到0的最⼩操作数 | ⽔果成篮 | 字⺟异位词
c++·算法·leetcode·滑动窗口
8Qi815 天前
LeetCode 76. 最小覆盖子串(Minimum Window Substring)
数据结构·算法·leetcode·滑动窗口·哈希表
8Qi815 天前
LeetCode 209. 长度最小的子数组(Minimum Size Subarray Sum)
java·算法·leetcode·双指针·滑动窗口
lynnlovemin18 天前
【信息学竞赛专题】滑动窗口(尺取法)超全详解|C++模板+经典例题+避坑指南
开发语言·c++·算法·滑动窗口·信息学竞赛
奶人五毛拉人一块22 天前
滑动窗口算法及习题讲解
数据结构·算法·滑动窗口·子数组
量子炒饭大师1 个月前
【优化算法】滑动窗口的「义体化」重构 ——【滑动窗口】何为滑动窗口?滑动窗口算法的核心目的是什么?
c++·算法·重构·优化算法·双指针·滑动窗口
老四啊laosi1 个月前
[滑动窗口] 13. 水果成篮
算法·leetcode·滑动窗口·水果成篮
handler011 个月前
滑动窗口(同向双指针)算法:模板与例题解析
c语言·c++·笔记·算法·蓝桥杯·双指针·滑动窗口
xin_nai2 个月前
LeetCode热题100(Java)(3)滑动窗口
算法·leetcode·滑动窗口