""" 0026.1 - Remove Duplicates from Sorted Array - Solution 1 - Two Pointer (In-Place) """
#####################################################################################
# Imports
#####################################################################################
from typing import List
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def removeDuplicates(self, nums: List[int]) -> int:
"""Remove Duplicates from Sorted Array Function"""
if not nums:
return 0
k = 0
for i in range(1, len(nums)):
if nums[i] != nums[k]:
k += 1
nums[k] = nums[i]
return k + 1
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
nums1 = [1, 1, 2]
print(Solution().removeDuplicates(nums1), nums1) # 2, [1, 2, ...]
nums2 = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
print(Solution().removeDuplicates(nums2), nums2) # 5, [0, 1, 2, 3, 4, ...]
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()
""" 0026.2 - Remove Duplicates from Sorted Array - Solution 2 - Using Set with Sort """
#####################################################################################
# Imports
#####################################################################################
from typing import List
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def removeDuplicates(self, nums: List[int]) -> int:
"""Remove Duplicates from Sorted Array Function"""
unique = sorted(set(nums))
for i in range(len(unique)):
nums[i] = unique[i]
return len(unique)
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
nums1 = [1, 1, 2]
print(Solution().removeDuplicates(nums1), nums1) # 2, [1, 2, ...]
nums2 = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
print(Solution().removeDuplicates(nums2), nums2) # 5, [0, 1, 2, 3, 4, ...]
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()