문제
첫 번째이자 유일한 인수로 단일 정수 num을 취하는 JavaScript 함수를 작성해야 합니다. 우리 함수는 0과 num 사이의 모든 숫자(둘 모두 포함)에 대한 배열을 준비해야 합니다. 각 숫자에 대해 해당 요소는 해당 숫자의 이진 표현에 포함된 1의 숫자여야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const num = 4;
그러면 출력은 다음과 같아야 합니다. -
const output = [0, 1, 1, 2, 1];
출력 설명:
0은 0을 포함하기 때문에 2진 형식으로 1은 1을 포함하는 식입니다.
예시
이에 대한 코드는 -
const num = 4; const mapBinary = (num = 0) => { if (num === 0){ return [0]; }; const res = [0]; for (let i = 1; i <= num; i++) { const n = i % 2 === 0 ? res[i/2] : res[Math.floor(i/2)] + 1; res.push(n); }; return res; };
코드 설명:
비트를 계산하는 동안 작업을 더 쉽게 하기 위해 염두에 둘 수 있는 몇 가지 사항이 있습니다.
-
numberOfBits(n) ===numberOfBits(2*n) , 두 번째 결과는 첫 번째 결과에 비해 0비트를 하나 더 얻습니다.
-
n이 짝수이면 n의 마지막 비트는 0이 됩니다.
-
n이 홀수인 경우 결과를 계산하는 것은 마지막 비트(n-1)/2를 1로 바꾸는 것으로 간주될 수 있으므로 numberOfBits(n) ===numberOfBits(Math.floor(n / 2)) 방정식을 얻습니다. + 1 .
출력
콘솔의 출력은 -
[ 0, 1, 1, 2, 1 ]