LeetCode - The World's Leading Online Programming Learning Platform
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100
idx=k 이후의 원소는 보지 않고, val 제거후 남은 원소들의 순서도 상관없기 때문에, nums의 앞에서 부터 val인 원소를 nums의 뒤에서 부터 val이 아닌 원소와 swap해주면 된다.
→ 사실 문제 조건이 in-place 배열 조작이기 때문에 무조건 swap
Swap
class Solution {
fun removeElement(nums: IntArray, `val`: Int): Int {
var cursor = 0
var changeCursor = nums.size - 1
while (cursor <= changeCursor) {
if (nums[cursor] != `val`) {
cursor++
continue
}
if (nums[changeCursor] == `val`) {
changeCursor--
continue
}
nums[cursor] = nums[changeCursor].also{nums[changeCursor] = nums[cursor]}
}
return cursor
}
}
시간 복잡도: 문자열 순회 = n