3741. Minimum Distance Between Three Equal Elements II
/**
* Problem: LeetCode 3741 - Minimum Distance Between Three Equal Elements II
* Difficulty: Medium
* Language: Java
* Author: CodeByTushu
*/
import java.util.*;
class Solution {
public int minimumDistance(int[] nums) {
int n = nums.length;
int[] prev1 = new int[n + 1];
int[] prev2 = new int[n + 1];
Arrays.fill(prev1, -1);
Arrays.fill(prev2, -1);
int minDistance = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
int val = nums[i];
if (prev2[val] != -1) {
minDistance = Math.min(minDistance, 2 * (i - prev2[val]));
}
prev2[val] = prev1[val];
prev1[val] = i;
}
return minDistance == Integer.MAX_VALUE ? -1 : minDistance;
}
}
"""
Problem: LeetCode 3741 - Minimum Distance Between Three Equal Elements II
Difficulty: Medium
Language: Python
Author: CodeByTushu
"""
class Solution:
def minimumDistance(self, nums: list[int]) -> int:
n = len(nums)
prev1 = [-1] * (n + 1)
prev2 = [-1] * (n + 1)
min_dist = float('inf')
for i, val in enumerate(nums):
if prev2[val] != -1:
min_dist = min(min_dist, 2 * (i - prev2[val]))
prev2[val] = prev1[val]
prev1[val] = i
return min_dist if min_dist != float('inf') else -1
/**
* Problem: LeetCode 3741 - Minimum Distance Between Three Equal Elements II
* Difficulty: Medium
* Language: C++
* Author: CodeByTushu
*/
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
class Solution {
public:
int minimumDistance(vector<int>& nums) {
int n = nums.size();
vector<int> prev1(n + 1, -1);
vector<int> prev2(n + 1, -1);
int minDistance = INT_MAX;
for (int i = 0; i < n; ++i) {
int val = nums[i];
if (prev2[val] != -1) {
minDistance = min(minDistance, 2 * (i - prev2[val]));
}
prev2[val] = prev1[val];
prev1[val] = i;
}
return minDistance == INT_MAX ? -1 : minDistance;
}
};
/**
* Problem: LeetCode 3741 - Minimum Distance Between Three Equal Elements II
* Difficulty: Medium
* Language: JavaScript
* Author: CodeByTushu
*/
/**
* @param {number[]} nums
* @return {number}
*/
var minimumDistance = function(nums) {
const n = nums.length;
const prev1 = new Int32Array(n + 1);
const prev2 = new Int32Array(n + 1);
prev1.fill(-1);
prev2.fill(-1);
let minDistance = Infinity;
for (let i = 0; i < n; i++) {
const val = nums[i];
if (prev2[val] !== -1) {
const dist = 2 * (i - prev2[val]);
if (dist < minDistance) {
minDistance = dist;
}
}
prev2[val] = prev1[val];
prev1[val] = i;
}
return minDistance === Infinity ? -1 : minDistance;
};