다중포인터 예제문제

정재성·2022년 9월 28일
0
post-thumbnail

function called countUniqueValues, which accepts a sorted array, and counts the unique values in the array. There can be negative numbers in the array, but it will always be sorted.

정렬된 숫자의 배열속에서 고유의 값의 갯수 을 찾아내라 , 숫자는 음수일수 있지만 항상 정렬되어 있다.

  • Time Complexity - O(n) 을 유지한다.(루프는 한번만 돌아야한다)
  • 두개의 포인터를 사용한다.
function countUniqueValues(arr){
  ///배열의 길이가 0 일 경우 0을 반환한다.
  if(arr.length === 0){
      return 0;
  }
  ///포인터 <1> i=0
  let i = 0;
  ///포인터<2> j=1 부터 시작하여 배열 길이 까지 루프
  for(j =1 ;j < arr.length; j++){
    ///배열의 i인덱스와 j인덱스가 서로 다르다면
      if(arr[i] !== arr[j]){
       //i는 1씩 증가하며
          i++;
        //i인덱스에 j인덱스의 값을 할당한다.
          arr[i]=arr[j];
      }
  }
  ///i의 현재 위치를 반환한다 (인덱스는 0부터 시작하므로 +1)
   return i+1;
}
countUniqueValues([1,1,1,2,3,4,4,4,9])///5
countUniqueValues([]); // 0
countUniqueValues([1, 1, 1, 1, 1, 2]); // 2
countUniqueValues([1, 2, 2, 5, 7, 7, 99]); // 5
countUniqueValues([1, 1, 2, 3, 3, 4, 5, 6, 6, 7]); // 7
countUniqueValues([-2, -1, -1, 0, 1]); // 4
profile
기술블로그 / 일상블로그

0개의 댓글