이 기사에서는 주어진 숫자의 모든 대체 비트를 교환하고 결과 숫자를 반환하는 코드 솔루션에 대해 논의합니다. 우리는 루프를 사용하지 않고 일정한 시간에 문제를 해결하기 위해 비트 연산의 개념을 사용하여 이 문제를 해결할 것입니다.
문제 설명 − 숫자 n이 주어지면 서로 인접한 비트 쌍을 바꿔야 합니다.
즉, 홀수 위치에 있는 모든 비트를 인접한 짝수 위치 비트와 바꿔야 합니다.
제약: 문제를 해결하는 동안 우리는 이 문제에 루프를 사용할 수 없다는 점을 명심해야 하며 O(1) 시간 복잡도로만 코드를 실행해야 합니다.
Input− n = 10011110
출력- 짝수 비트와 홀수 비트를 교환한 후
얻은 이진수: 01101101
Input− n = 10011110
출력- 짝수 비트와 홀수 비트를 교환한 후
얻은 이진수: 01101101
설명−
더 나은 이해를 위해 이전 예를 살펴보겠습니다.
으아아아결과적으로 우리는 홀수 위치에 짝수 위치 비트를 원하고 그 반대도 마찬가지입니다
홀수 위치의 짝수 위치 비트의 경우
짝수 위치를 한 위치만큼 오른쪽으로 이동해야 합니다.
짝수 위치의 비트에 대해서는 E >> 1을 변경하여 원하는 위치를 얻습니다.
마찬가지로, 홀수 비트의 원하는 위치를 얻으려면 홀수 위치 비트를 한 위치만큼 왼쪽으로 이동해야 합니다.
따라서 홀수 비트의 경우 원하는 위치를 얻으려면 O
이제 다음 문제는 홀수 및 짝수 위치 비트를 추출하는 것입니다.
우리가 알고 있듯이
으아아아n에서 E를 추출하려면 수행만 하면 됩니다
으아아아마찬가지로 n에서 O를 추출하려면 다음을 수행해야 합니다.
으아아아이제, 교체된 출력을 찾으려면
관련 단계는 다음과 같습니다.
E>>1
오
이제 or 연산을 이용해 E와 O를 결합해보겠습니다.
따라서 결과는 – Result = ( E >> 1 | O
이 메서드의 코드는 다음과 같습니다.
으아아아시간 복잡도 - 이 방법의 시간 복잡도는 O(1)입니다.
공간 복잡성 - 추가 공간을 사용하지 않습니다. 보조 공간 복잡도는 O(1)입니다.
위 내용은 2바이트마다 2비트마다 교환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!