From c5540e8fa6d7618b0008392814e1e33f87b34213 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Tue, 8 Apr 2025 14:12:35 +0000 Subject: [PATCH] https://leetcode.com/problems/minimum-number-of-operations-to-make-elements-in-array-distinct --- ...ions_to_make_elements_in_array_distinct.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 easy/minimum_number_of_operations_to_make_elements_in_array_distinct.py 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 +