程式語言 - LeetCode - C++ - 3740. Minimum Distance Between Three Equal Elements I



題目:


解答:

class Solution {
public:
    int minimumDistance(vector<int>& nums) {
        unordered_map<int, vector<int>> mp;

        for (int i = 0; i < nums.size(); i++) {
            mp[nums[i]].push_back(i);
        }

        int ans = INT_MAX;

        for (auto& [val, pos] : mp) {
            if (pos.size() < 3) {
                continue;
            }

            for (int i = 0; i + 2 < pos.size(); i++) {
                ans = min(ans, abs(pos[i + 2] - pos[i + 0]) << 1);
            }
        }

        return ans == INT_MAX ? -1 : ans;
    }
};