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

    };

相关推荐
aseity5 小时前
跨平台项目中QString 与 非Qt 跨平台动态库在字符集上的一个实用的互操作约定.
c++·经验分享
CN-Dust5 小时前
【C++】while语句例题专题
数据结构·c++·算法
用户805533698036 小时前
现代Qt开发教程(新手篇)1.11——定时器
c++·qt
澈2076 小时前
STL迭代器:容器遍历的万能钥匙
开发语言·c++
灵智实验室6 小时前
PX4位置速度估计技术详解(四):LPE 激光雷达高度融合的实现错误
算法·无人机·px 4
azoo6 小时前
emplace_back和push_back() 函数添加 cv::Point 类型数据
c++·opencv
CQU_JIAKE6 小时前
【A】3742,3387,并查集
算法
gihigo19986 小时前
CHAN时延估计算法(二维/三维定位实现)
算法
freexyn6 小时前
Matlab自学笔记七十六:表达式的展开、因式分解、化简、合并同类项
笔记·算法·matlab
样例过了就是过了6 小时前
LeetCode热题 不同路径
c++·算法·leetcode·动态规划