"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 비트와 0보다 큰 가장 큰 조합

비트와 0보다 큰 가장 큰 조합

2025-03-26에 게시되었습니다
검색:376

Largest Combination With Bitwise AND Greater Than Zero

2275. 비트와 0보다 큰 가장 큰 조합

난이도 : medium

주제 : 배열, 해시 테이블, 비트 조작, 계산

배열 Nums의 비트 와이드와 는 nums의 모든 정수 중 하나입니다.

  • 예를 들어, nums = [1, 5, 3]의 경우 비트와 같으며 1 & 5 & 3 = 1과 같습니다.
  • 또한, nums = [7], 비트와 7입니다.

긍정적 인 정수 후보가 주어집니다. 후보자 수의 모든 조합 비트와 를 평가하십시오. 후보자의 각 번호는 각 조합에서 한 번만 한 번만 사용할 수 있습니다.

반환 가장 큰 후보자의 크기는 비트와 더 큰 0

.

의 크기입니다. 예 1 :

  • 입력 :
  • 후보자 = [16,17,71,62,12,24,14]
  • 출력 :
  • 4
  • 설명 :
      조합 [16,17,62,24]의 조합은 16 & 17 & 62 & 24 = 16> 0입니다.
    • 조합의 크기는 4입니다.
    • 4보다 큰 크기의 조합이 비트와 0보다 크지 않다는 것을 알 수 있습니다.
    • 하나 이상의 조합이 가장 큰 크기를 가질 수 있습니다.
    • 예를 들어, 조합 [62,12,24,14]은 약간의 것이며 62 & 12 & 24 & 14 = 8> 0.

예 2 :

  • 입력 :
  • 후보자 = [8,8]
  • 출력 :
  • 2
  • 설명 :
      가장 큰 조합 [8,8]은 비트와 8 & 8 = 8> 0입니다.
    • 조합의 크기는 2이므로 우리는 2를 반환합니다.

제약 조건 :

  • 1 1 7
힌트:

비트 와시적이고 0보다 큰 경우, 조합의 모든 숫자에 대해 적어도 하나의 비트가 1이어야합니다.
  1. 후보자의 길이는 24 비트이므로 모든 비트 위치에 대해 비트가 있고 그 비트 위치에 1을 가질 수 있도록 가장 큰 조합의 크기를 계산할 수 있습니다.
해결책:

우리는 이진 표현에서 적어도 하나의 비트 위치가 유지되는 숫자 그룹을 식별하는 데 집중해야합니다.

솔루션 개요

    비트 분석
  1. : 후보자의 각 숫자는 최대 24 비트의 이진수로 표시 될 수 있기 때문에 (1
  2. 가장 큰 카운트를 찾으십시오

    : 주어진 위치에 세트 비트가있는 가장 큰 숫자는 비트와 결과가 0보다 큰 가장 큰 조합을 나타 내기 때문에 답이 될 것입니다.

  3. 후보자를 고려하십시오 = [16, 17, 71, 62, 12, 24, 14] :
  4. 각 숫자를 바이너리로 변환하고 비트 위치를 분석합니다.

    모든 숫자에 걸쳐 각 비트가 몇 번 설정되어 있는지 계산하십시오.
모든 비트 위치에서 최대 수를 찾으십시오.

PHP 에서이 솔루션을 구현하겠습니다 :

2275. 비트 와이즈와 0보다 큰 가장 큰 조합
  • php /** * @Param Integer [] $ 후보자 * @return Integer */ 기능 최대 규모 ($ 후보) { ... ... ... /** * ./solution.php로 이동하십시오 */ } // 예제 사용 $ 후보 = [16, 17, 71, 62, 12, 24, 14]; 에코 최대 규모 ($ 후보); // 출력 : 4 ?>
  • 설명:

각 비트 위치를 통한 루프 : 우리는 각 비트 위치를 0에서 23까지 반복합니다.


: 각 위치에 대해 후보자의 특정 비트 세트가있는 숫자 수를 계산합니다.

    최대 조합 크기 업데이트
  1. : 모든 비트 위치에서 가장 높은 카운트를 추적합니다.
  2. 결과를 반환
  3. : 결과는 필요에 따라 비트와 0보다 큰 가장 큰 조합 크기입니다.
  4. 복잡성 분석
  5. 시간 복잡성
  6. :
  7. o (n x 24) = o (n)

  • n . 공간 복잡성 :
  • o (1)
  • , 우리는 고정 된 양의 추가 공간 만 사용하고 있기 때문에 이 접근법은 입력 크기 한계를 처리 할 수있을 정도로 효율적입니다 (후보자 .length 5
  • )

연락처 링크

이 시리즈가 도움이된다면 리포지토리 Github의 스타를 제공하거나 좋아하는 소셜 네트워크에 게시물을 공유하는 것이 좋습니다. 당신의 지원은 나에게 큰 의미가 있습니다!

이와 같은 유용한 컨텐츠를 원한다면 언제든지 나중하십시오 :

linkedin

  • github
릴리스 선언문 이 기사는 다음과 같이 재현됩니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3