3740. 三个相等元素之间的最小距离 I

3740. 三个相等元素之间的最小距离 I

提示

给你一个整数数组 nums

如果满足 nums[i] == nums[j] == nums[k],且 (i, j, k) 是 3 个 不同 下标,那么三元组 (i, j, k) 被称为 有效三元组

有效三元组距离 被定义为 abs(i - j) + abs(j - k) + abs(k - i),其中 abs(x) 表示 x绝对值

返回一个整数,表示 有效三元组最小 可能距离。如果不存在 有效三元组 ,返回 -1

示例 1:

输入: nums = 1,2,1,1,3

输出: 6

解释:

最小距离对应的有效三元组是 (0, 2, 3)

(0, 2, 3) 是一个有效三元组,因为 nums[0] == nums[2] == nums[3] == 1。它的距离为 abs(0 - 2) + abs(2 - 3) + abs(3 - 0) = 2 + 1 + 3 = 6

示例 2:

输入: nums = 1,1,2,3,2,1,2

输出: 8

解释:

最小距离对应的有效三元组是 (2, 4, 6)

(2, 4, 6) 是一个有效三元组,因为 nums[2] == nums[4] == nums[6] == 2。它的距离为 abs(2 - 4) + abs(4 - 6) + abs(6 - 2) = 2 + 2 + 4 = 8

示例 3:

输入: nums = 1

输出: -1

解释:

不存在有效三元组,因此答案为 -1。

提示:

  • 1 <= n == nums.length <= 100

  • 1 <= nums[i] <= n

    class Solution {
    public:
    int minimumDistance(vector& nums) {

    复制代码
          vector<vector<int>>q;
          q.resize(101);  
          int pos=0;
          for(auto it:nums){
              q[it].push_back(pos);
              pos++;
          }
          int minn=-1;
          for(int i=0;i<=100;i++){
              if(q[i].size()>=3){
                  if(minn==-1)minn=500;
                  for(int j=2;j<q[i].size();j++){
                      minn=min(minn,2*(q[i][j]-q[i][j-2]));
                  }
              }
          }
          return minn;
      }

    };

相关推荐
Web极客码几秒前
如何用三段式确定性剪枝,为 LLM Agent 砍掉 35% 的 Token 成本?
服务器·人工智能·算法·机器学习
程序猿乐锅4 分钟前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
云泽8088 分钟前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio
wabs66638 分钟前
关于图论【广度优先搜索的理论基础】
算法·图论·宽度优先
孤魂23342 分钟前
逻辑回归算法
算法·机器学习·逻辑回归
weixin_377634841 小时前
【多模型预测】 如何合理融合多个预测分值
算法·机器学习·概率论·预测·agent预测
无风听海1 小时前
Claude Agent Skills 的四种设计模式;从渐进式披露到最小权限
java·算法·设计模式
fqbqrr1 小时前
2607d,C++细节比不上d
c++·d
^yi1 小时前
【C++】继承的那些事儿~
c++·继承·菱形继承·隐藏·final·继承原理·多继承的指针偏移
37.2℃9951 小时前
专业的Claude Design解决方案
前端·算法