程式語言 - LeetCode - C++ - 3741. Minimum Distance Between Three Equal Elements II



題目:


解答:

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 + 0] - pos[i + 1]) + 
                    abs(pos[i + 1] - pos[i + 2]) + 
                    abs(pos[i + 2] - pos[i + 0]) 
                );
            }
        }

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