Problem :

https://leetcode.com/problems/remove-element/description/


My Solution :

class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i, j = 0, len(nums)-1
while True:
while i <= j and nums[i] != val:
i += 1
while i <= j and nums[j] == val:
j -= 1
if j <= i:
return i
nums[i], nums[j] = nums[j], nums[i]


Comment :

list를 다루는 문제는 항상 index 때문에 Edge Case에 당하는 경우가 많다. 비어있는 입력, 값이 1개만 들어있는 입력 등... 나름 O(n)으로 깔끔하게 푼다고 풀었는데 이게 최선일지는 모르겠다.