less than 1 minute read

Problem Statement

problem

My solution

class Solution:
    def minimumOperations(self, nums: List[int]) -> int:
        N = len(nums)
        counter = Counter(nums)
        res = 0
        for i in range(0, N, 3):
            if any(v > 1 for v in counter.values()):
                j = i
                while j < N and j < i + 3:
                    counter[nums[j]] -= 1
                    if counter[nums[j]] == 0:
                        del counter[nums[j]]
                    j += 1
                res += 1
            else:
                break
        return res

Editorial

class Solution:
    def minimumOperations(self, nums: List[int]) -> int:
        seen = [False] * 128
        for i in range(len(nums) - 1, -1, -1):
            if seen[nums[i]]:
                return i // 3 + 1
            seen[nums[i]] = True
        return 0
class Solution:
    def minimumOperations(self, nums: List[int]) -> int:
        def check_unique(start):
            seen = set()
            for num in nums[start:]:
                if num in seen:
                    return False
                seen.add(num)
            return True

        ans = 0
        for i in range(0, len(nums), 3):
            if check_unique(i):
                return ans
            ans += 1
        return ans