예제 2
입력: nums = [0,1,2,2,3,0,4,2], val = 2
출력: 5, nums = [0,1,3,0,4,,,_]
설명: 배열에서 2를 제거하면 [0,1,3,0,4]가 남습니다. 따라서 반환 값은 5입니다.
해결
포인터를 뒤에서 시작을 했다. 잘 짰으면 상관이 없긴 하지만 i랑 k가 자리가 역전될때가 생겼고 그 때문에 length가 -1 이 되는 경우가 생겨서 해결 코드를 추가하느라 시간이 걸렸다.
변명을 하자면 테스트 케이스를 보고 짜다보니 꽤 복잡하게 생각했다.
답 코드를 보면 포인터를 뒤에서가 아닌 앞에서 시작했는데 이대로 진행하면 테스트케이스(답은 맞음)의 배열이 다르게 나온다.
앞으로는 테스트케이스에 집중이아닌 문제를 읽어서 거기서 말하는 답의 최적 값을 찾아봐야겠다.
class Solution {
int removeElement(List<int> num, int val) {
int c=0;
for(int i=0;i<num.length;i++)
{
if(num[i]!=val)
{
num[c]=num[i];
c++;
}
}
return c;
}
}
class Solution {
int removeElement(List<int> nums, int val) {
nums.removeWhere((elements)=> elements==val);
return nums.length;
}
}