도전
양의 정수 목록이 주어지면 각 정수에서 최대 1 비트를 차지하는 순열이 있는지 확인하고 모든 1
s 로 구성된 이진수를 만들 수 있습니다.
결과 이진수의 비트 수는 정수 목록에서 가장 높은 MSB 와 같습니다 .
산출
코드는 그러한 순열이 존재 하는지를 나타내는 참 / 거짓 값을 출력하거나 반환해야 합니다.
예
진실한 :
list [4, 5, 2]
와 바이너리 표현으로 [100, 101, 10]
각각 세 번째, 첫 번째 및 두 번째 비트를 사용하여 111
다음 을 만들 수 있습니다 .
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
list를 사용하면 [3, 3, 3]
모든 숫자에 첫 번째와 두 번째 비트가 모두로 설정되어 1
있으므로 숫자를 선택하여 여유를 가질 수 있습니다.
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
팔시 :
list를 사용하면 [4, 6, 2]
첫 번째 비트가로 설정된 1
숫자가 없으므로 이진수를 만들 수 없습니다.
4 -> 100
6 -> 110
2 -> 010
list를 사용하면 [1, 7, 1]
숫자 중 하나만 두 번째와 세 번째 비트가로 설정되며 1
숫자를 만들 수 없습니다.
1 -> 001
7 -> 111
1 -> 001
분명히, 최대 세트 비트 수가 정수의 수를 초과하면 결과 수를 절대로 만들 수 없습니다.
테스트 사례
진실한 :
[1]
[1, 2]
[3, 3]
[3, 3, 3]
[4, 5, 2]
[1, 1, 1, 1]
[15, 15, 15, 15]
[52, 114, 61, 19, 73, 54, 83, 29]
[231, 92, 39, 210, 187, 101, 78, 39]
팔시 :
[2]
[2, 2]
[4, 6, 2]
[1, 7, 1]
[15, 15, 15]
[1, 15, 3, 1]
[13, 83, 86, 29, 8, 87, 26, 21]
[154, 19, 141, 28, 27, 6, 18, 137]