Notice
Recent Posts
Recent Comments
Link
오늘도 개발
11. Remove Element 본문
문제
https://leetcode.com/explore/learn/card/fun-with-arrays/511/in-place-operations/3575/
nums 배열에서 val인 요소를 모두 삭제하고
삭제 후 남아있는 요소의 개수 k를 반환하라.
in-place로 실행하되 요소의 순서는 바뀌어도 됨.
Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_]
내가 해결한 방식
val_index는 val을 가리키는 포인터,
i는 val이 아닌 요소를 찾으며 한 칸씩 이동하는 포인터.
val_index, i 둘 다 0에서 시작한다.
- 현재 요소가 val인 경우 :
i만 한 칸 앞으로 보낸다.
val_index는 가만히 있는다.
- 현재 요소가 val이 아닌 경우 :
i요소와 val_index 요소를 교환한다.
i와 val_index를 둘 다 한 칸씩 이동한다.
=> val이 있는 경우 val_index는 항상 val을 가리키고, i는 항상 val이 아닌 요소를 가리킴
=> val이 없는 경우 val_index, i는 항상 같은 요소를 가리킴.
=> iteration 완료 후 val만 배열 뒤로 정리됨. (ex. [5, 2, 4, 9, 2, 10] => [5, 4, 9, 10, 2, 2] val_index는 4가 됨)
def removeElement(self, nums: List[int], val: int) -> int:
val_index = 0
for i in range(len(nums)):
if nums[i] != val:
nums[i], nums[val_index] = nums[val_index], nums[i]
val_index += 1
return val_index'자료구조 & 알고리즘 > Leetcode' 카테고리의 다른 글
| 13. Third Maximum Number (0) | 2022.06.04 |
|---|---|
| 12. Height Checker (0) | 2022.06.03 |
| 10. Sort Array By Parity (0) | 2022.05.26 |
| 9. Move Zeros (0) | 2022.05.25 |
| 8. Replace Elements with Greatest Element on Right Side (0) | 2022.05.22 |