diff --git a/easy/minimum_number_of_operations_to_make_elements_in_array_distinct.py b/easy/minimum_number_of_operations_to_make_elements_in_array_distinct.py new file mode 100644 index 0000000..12b75fa --- /dev/null +++ b/easy/minimum_number_of_operations_to_make_elements_in_array_distinct.py @@ -0,0 +1,26 @@ +# https://leetcode.com/problems/minimum-number-of-operations-to-make-elements-in-array-distinct + +from typing import List + +class Solution: + def minimumOperations(self, nums: List[int]) -> int: + result = 0 + cnt = {} + left, right = 0, 0 + while right < len(nums): + curr_num = nums[right] + cnt[curr_num] = cnt.get(curr_num, 0) + 1 + while cnt[curr_num] > 1: + result += 1 + pops = len(nums) - left + if pops > 3: + pops = 3 + for _ in range(pops): + if left <= right: + cnt[nums[left]] -= 1 + left += 1 + if left > right: + right = left - 1 + right += 1 + return result +