[알고리즘/leetcode] Remove Duplicates from Sorted Array(python)

유현민·2022년 8월 17일
0

알고리즘

목록 보기
225/253
post-custom-banner

리스트를 추가로 생성하지 말라는 규칙이 있다.(Do not allocate extra space for another array. You must do this by modifying the input array in-place with O(1) extra memory.)

따라서 주어진 리스트만 가지고 풀어야 함.

솔직히 떠오르지 않아서 다른 사람들의 풀이를 보았는데 투포인터로 했다.

s, e = 0, 1로 할당하고

만약 nums[s] == nums[e - 1] 이면 e + 1
다르면 s+1 자리에 e - 1을 넣고 s+1, e+1을 해주었다.
반복 조건은 while을 사용하여 e가 len(nums)보다 커지면 종료되게 했다.

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        l = len(nums)
        if l == 0:
            return 1
        s, e = 0, 1
        while e <= l:
            if nums[s] == nums[e - 1]:
                e += 1
            elif nums[s] != nums[e - 1]:
                nums[s + 1], nums[e - 1] = nums[e - 1], nums[s + 1]
                s += 1
                e += 1
        return s + 1
profile
smilegate
post-custom-banner

0개의 댓글