Leetcode Java Circular Permutation in Binary Representation

업데이트:

문제

Link

코드

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;
  }

}

결과

Link

설명

  1. start부터 시작해서 다음부터 1 비트씩 다른 n 길이의 비트 길이의 숫자들을 반환하는 문제이다.

  2. result는 결과를 넣을 변수로, ArrayList로 초기화한다.

  3. 0부터 1을 n만큼 비트를 이동시킨 값 미만까지 i를 증가시키며 아래를 반복한다.
    • result에 start와 i 두 개를 XOR(^) 비트 연산을 수행한 값을 좌측으로 한 번 비트를 이동시킨 값을 넣어준다.
  4. 반복을 통해 숫자들을 저장한 result를 주어진 문제의 결과로 반환한다.

참고

  • 자세한 설명은 Gray Code를 읽어본다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기