참고
문제해설
문제 로직고민
NOTE
•
기존 배열을 순환하면서 배열과, 제거되는 정수를 판단한다.
int 제거된 값 = 0;
int 배열 인덱스 = 0
for(int i=0; i < 배열길이; i++{
if(제거하는 값) 제거된 값++;
else 기존배열[배열 인덱스++] 기존배열[i];
}
Java
복사
◦
순환한 값이 제거해야하는 경우에는 제거된 정수값을 증가시킨다.
◦
순환한 값이 제거해야하는 경우가 아닌경우에는 해당 idx값을 변형시킨다.
작성코드
NOTE
class Solution {
public int removeElement(int[] nums, int val) {
int k = 0;
int idx = 0;
for(int i = 0; i< nums.length; i++){
if(nums[i] == val) k++;
else nums[idx++] = nums[i];
}
return nums.length - k;
}
}
Java
복사
정답코드
NOTE
class Solution {
public int removeElement(int[] nums, int val) {
int s = 0;
int e = nums.length-1;
while(s<=e){
if(nums[e] == val){
e--;
}
else{
if(nums[s] == val){
int temp = nums[e];
nums[e] = nums[s];
nums[s] = temp;
s++;
e--;
}
else{
s++;
}
}
}
return e+1;
}
}
Java
복사
메모리를 가장 적게 사용하는 코드
•
대략 3.2MB 메모리를 덜 사용하는 코드인데, 왜 덜 사용하는지는 모르겠다.