본문 바로가기

old/Algorithm Solving

Remove Duplicates from Sorted Array 문제풀이

반응형

문제

Problem_Link

내 답

  • 1시간 제한
  • 인터넷 사용 안함

내 코드


class Solution {
    public int removeDuplicates(int[] nums) {

        if(nums==null ||nums.length==0) return 0;

        int temp = -101;
        int count=0;
        int pos=0;

        for(int i=0;i<nums.length;++i){
            if(temp!=nums[i]){
                temp=nums[i];
                nums[pos]=nums[i];
                ++count;
                ++pos;
            }
        }

        return count;

    }
}
  • Time complexity : $O(n)$
  • Space complexity : $O(1)$

최선의 답

인터넷과 책에서 찾아본 답


 class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums==null ||nums.length==0) return 0; //널이거나 0이면 0을 리턴

        int curIndex = 0;
        for (int i = 1; i < nums.length; i++) {
            if (nums[curIndex] != nums[i]) {//현재 루프돌고 있는 인덱스의 값과 curIndex 인덱스의 값이 다르면
                nums[++curIndex] = nums[i];//루프돌고 있는 인덱스 값을 넣고,curIndex 인덱스를 한칸 이동시킵니다.
            }
        }

        return curIndex + 1;//curIndex는 인덱스 값이므로, 1을 더해서 카운트 값으로 만들어 리턴합니다.
    }
}
  • Time complexity : $O(n-1)$
  • Space complexity : $O(1)$

반성 할 점

  • 알고리즘 자체는 괜찮다고 볼수 있지만, 최적화이 조금 부족한듯 느껴집니다.
반응형