Problem Statement

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