from typing import List
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) == 0 : return 0
k = 1
idx = 0
while idx < len(nums)-1 :
if nums[idx] != nums[idx+1] :
nums[k] = nums[idx+1]
k+=1
idx+=1
return k
nums
의 길이가 0
일 경우는 0
리턴
처음에 생각한 건
for idx in len(nums) :
if nums[idx] != nums[idx+1] :
이거인데 이럴 경우 list out of range
가 발생해서 while
문을 쓰기로 함
다만, while
문할때도 len(nums)
까지 하면 범위가 벗어났다고 뜨기 때문에 조건에 len(nums)-1
설정
그리고 가장 헷갈렸던 부분인데, 문제를 제대로 안 읽은 바람에(가뜩이나 영어도 못해서;)
요소를 삭제해서 리스트 길이를 계속 줄여나갔다.
구글에는 번역의 신이 있기 때문에 도움을 받았고, 리스트 길이는 변하지 않고 새로 갱신해 나아가는거라는 걸 알게 되었다.
idx
는 반복문마다 증가되므로 새로운 인덱스를 갱신할 변수가 필요했고, 나는 k
로 설정
그래서 앞뒤를 비교하여 두개가 다르다면 뒤의 요소를 앞에거에다가 대입했다
그래서 값이 갱신될때마다 k
도 1
씩 증가하고 그 때의 k
값은 문제에서 말한 final result
가 된다