문제 위치
오름차순으로 정렬된 숫자 배열이 있다.
중복된것을 없애면 된다.
nums[i-1] != num[i] 인 값을 담고, 아닌 값을 걸르면 된다.
class Solution {
public int removeDuplicates(int[] nums) {
// 정렬되어 있음. 중복된것을 없애야함
int[] result = new int[nums.length];
int cur_result = 1;
result[0] = nums[0];
for(int i=1; i<nums.length; i++){
if(nums[i-1] != nums[i]) result[cur_result++] = nums[i];
}
for(int i=0; i<cur_result; i++){
nums[i] = result[i];
}
return cur_result;
}
}
result 를 안쓰고 nums에 새로운 iterlator를 쓰면 더 효율적으로 동작한다고 한다.
class Solution {
public int removeDuplicates(int[] nums) {
int j = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[i - 1]) {
nums[j] = nums[i];
j++;
}
}
return j;
}
}