참고
문제해설
문제 로직고민
NOTE
•
비내림차순으로 정렬되어 있다 ⇒ 오름차순으로 정렬되어 있다!
int idx = 1;
int k = 0;
for(int i = 1; i < 배열 길이; i++) {
if(배열[i] <= 배열[i-1] k++;
else 배열[idx++] = 배열[i];
}
Java
복사
◦
처음에 비내림차순에 대해서 정렬이 되어있지 않다는 말인지 헷갈렸는데 검색해보니 다음 값이 동일할수 있는 오름차순이라고 한다.
◦
오름차순으로 정렬되어 있는경우, 이전 값보다 큰값이 아닌경우를 중복으로 생각하면된다.
작성코드
NOTE
class Solution {
public int removeDuplicates(int[] nums) {
int idx = 1;
int k = 0;
for(int i = 1; i < nums.length; i++){
if(nums[i] <= nums[i-1]) k++;
else nums[idx++] = nums[i];
}
return nums.length - k;
}
}
Java
복사
정답코드
NOTE
class Solution {
public int removeDuplicates(int[] nums)
{
int i=0;
for(int j=1;j<nums.length;j++)
{
if(nums[i]!=nums[j])
{
i++;
nums[i]=nums[j];
}
}
return i+1;
}
}
Java
복사
메모리를 가장 적게 사용하는 코드
•
메모리 2.4MB차이의 코드이다.
•
내가 사용한 변수 idx와 k를 더 효율적으로 사용한거같다.