Leetcode Java Circular Permutation in Binary Representation
업데이트:
문제
코드
class Solution {
public List<Integer> circularPermutation(int n, int start) {
List<Integer> result = new ArrayList<>();
for (int i = 0; i < 1 << n; i++) {
result.add(start ^ i ^ i >> 1);
}
return result;
}
}
결과
설명
-
start부터 시작해서 다음부터 1 비트씩 다른 n 길이의 비트 길이의 숫자들을 반환하는 문제이다.
-
result는 결과를 넣을 변수로, ArrayList로 초기화한다.
- 0부터 1을 n만큼 비트를 이동시킨 값 미만까지 i를 증가시키며 아래를 반복한다.
- result에 start와 i 두 개를 XOR(^) 비트 연산을 수행한 값을 좌측으로 한 번 비트를 이동시킨 값을 넣어준다.
- 반복을 통해 숫자들을 저장한 result를 주어진 문제의 결과로 반환한다.
참고
- 자세한 설명은 Gray Code를 읽어본다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기