[문제 설명]
- 정수 배열 nums, 특정 값 val 이 주어지면, 정수 배열 내에 있는 요소들 중 val과 같은 요소를 제자리에서 삭제한다.
- 삭제 후 남은 요소의 개수를 반환한다.
[문제 조건]
- 배열 nums에서 모든 val 값을 제자리에서(in-place) 삭제해야 한다.
- 삭제 후에는 배열에 val과 같지 않은 요소들만 남아야 한다.
- 정렬 순서가 바뀌어도 상관없다.
- 배열의 첫 k개의 요소가 val과 같지 않은 값들로 채워져 있어야 한다.
[코드]
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
k = 0
for i in range(len(nums)):
if nums[i] != val:
nums[k] = nums[i]
k += 1
return k
[코드 설명]
- 투 포인터 사용:
- k는 유효한 요소의 위치를 가리킴 (유효한 값이 저장될 인덱스).
- i는 현재 탐색 중인 인덱스.
- 유효 요소 체크:
- nums[i]가 val과 다르면, nums[k]에 값을 저장하고 k를 증가.
- 같다면 건너뛰어 삭제 처리.
- 반환값:
- k는 val이 아닌 값의 개수이므로 그대로 반환.
'알고리즘 > LeetCode' 카테고리의 다른 글
[LeetCode/Python] 35. Search Insert Position (0) | 2025.04.05 |
---|---|
[LeetCode/Java] 28. Find the Index of the First Occurrence in a String (0) | 2025.04.04 |
[LeetCode/Java] 26. Remove Duplicates from Sorted Array (0) | 2025.04.02 |
[LeetCode/Java] Longest Palindromic Substring (0) | 2025.03.31 |
[LeetCode/Java] Median of Two Sorted Arrays (0) | 2025.03.27 |