빈 개체를 사용하여 JavaScript에서 주파수 카운터 문제 해결

2715 단어
JavaScript에서 빈 개체를 생성하면 배열에서 값의 빈도를 찾아야 하는 기술 인터뷰 문제를 해결하는 데 도움이 될 수 있습니다.

빈 개체 만들기



빈 개체를 만들려면 변수를 해시와 동일하게 설정합니다. 배열과 달리 객체에는 순서가 없으며 인덱스 대신 키/값 쌍을 사용합니다.

let myObject = {};


어레이에서 키 생성


array 가 주어지면 배열의 값을 객체의 키로 반복하고 할당할 수 있습니다.

암호:




for (let i = 0; i < array.length; i++){ // A
   let key = array[i];                  // B
   if (myObject[key]){                  // C
        myObject[key] += 1;             // D
   } else {                             // E
        myObject[key] = 1;              // F
   }
}


유사 코드:


  • A) 어레이 전체를 반복합니다
  • .
  • B) 배열의 각 항목 값을 가져와 변수로 설정합니다key.
  • C) keymyObject의 키로 존재하는 경우...
  • D) ... 1만큼 증가

  • E) 그렇지 않은 경우(keymyObject에 존재하지 않음)...
  • F) ... keymyObject를 만들고 1와 동일하게 설정합니다.


  • 조건부(삼항) 연산자를 사용하여 리팩토링된 코드:




    for (let i = 0; i < array.length; i++){
       let key = array[i];
       if myObject[key] ? myObject[key] += 1 : myObject[key] = 1
    }
    


    개체의 값에 액세스하는 방법



    객체의 키 값에 액세스하는 것은 배열의 인덱스에 액세스하는 것과 같습니다.

    myObject[value];
    


    주파수 카운터 문제 해결



    배열에서 반복되지 않는 유일한 숫자를 찾기 위해 풀고 있다고 가정합니다. 답이 1개만 있다고 가정합니다.

    해결하려면 다음을 수행할 수 있습니다.
  • A) 빈 객체 생성
  • B) 배열을 반복하여 배열의 값을 캡처합니다
  • .
  • C) 값을 키로 설정하고 어레이가 발생할 때마다 증분합니다
  • .
  • D) 반복되지 않는 숫자를 찾기 위해 개수가 1인 해시의 키를 반환합니다.

  • function findUniqueNumber(array) {  
      let myObject = {};                                          // A
    
      for (let i = 0; i < array.length; i++){                     // B
          let num = array[i];
          myObject[num] ? myObject[num] +=1 : myObject[num] = 1   // C
      }
    
      for (let key in myObject){
           if (myObject[key] === 1) return key;                   // D
      }
    }
    
    findUniqueNumber( [4, 6, 5, 17, 3, 5, 17, 88, 4, 88, 3] )     // 6
    


    객체 사용의 Big O



    무차별 대입을 사용하면 두 개의 중첩 루프가 필요하기 때문에 2차 방정식의 Big OO(n^2)가 생성됩니다. n 입력이 증가하면 비교할 첫 번째 숫자와 다음 숫자를 가져오기 위해 2세트의 반복이 필요하고 배열의 길이 전체에서 반복됩니다.

    개체를 생성하여 Big O를 선형O(n)으로 줄일 수 있습니다. 여기에서 배열을 두 번 반복하지만 독립적인 루프에서 반복합니다( 2nn로 단순화할 수 있습니다). 따라서 일반적으로 성능은 입력 배열의 크기에만 의존합니다.

    좋은 웹페이지 즐겨찾기