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;
      }

    };

相关推荐
夏幻灵40 分钟前
每日一题:LeetCode 165:比较版本号
算法·leetcode·职场和发展
道尔柯南41 分钟前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
Navigator_Z1 小时前
LeetCode //C - 1288. Remove Covered Intervals
c语言·算法·leetcode
码爸1 小时前
决策树介绍与示例
python·算法·机器学习
动词ing2 小时前
【题目练习】字符串相乘
算法
0+1112 小时前
算法 --链表
数据结构·算法·leetcode·链表
aqiu1111112 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
Terra.K2 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法
智码看视界3 小时前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
Peregrine93 小时前
C++ - > 类和对象
java·c++·算法