LeetCode 80 Remove Duplicates from Sorted Array II 풀러가기
숫자가 오름차순으로 정렬 된 nums
배열이 있다.
숫자가 최대 2번 중복 허용이 가능하도록 변경하려고 한다.
for 문을 돌며 배열을 처음부터 끝가지 순회하면서 nums[index(default 0)] 번 부터 중복을 최대 2번 허용하는 배열로 바꾸려고 했다.
2번 중복허용을 위해 처음에는 숫자의 갯수를 세어서, 2가 되면 더이상 못 넣게 하려했다.
그러나 count로 짜지 않아도, 이전값과 다르면 무조건 넣고, 두개 이상 되면 boolean 값을 바꾸어 못 넣도록 할 수 있을 것 같았다.
nums[index-1]은 갱신된 nums의 마지막 index로 이 값과 동일하다면 check 값을 보며 한번 더 넣어도 될지를 결정하고,
동일하지 않다면 무조건 넣을 수 있도록 만들었다.
코드
class Solution {
public int removeDuplicates(int[] nums) {
int index = 1;
boolean check = false;
for(int i=1; i<nums.length; i++){
if(nums[i]==nums[index-1]){
//check가 false면 한번 더 넣을 수 있음.
if(!check){
nums[index] = nums[i];
check = true;
index++;
}
}else{
nums[index] = nums[i];
check = false;
index++;
}
}
return index;
}
}
결과 : 성공
Runtime
Memory
시간은 괜찮은데, 메모리가 효율적이지는 못한 것 같아 다른 방식을 고민해보아야겠다.