Leetcode Java Gray Code
업데이트:
문제
코드
class Solution {
public List<Integer> grayCode(int n) {
List<Integer> result = new ArrayList<>();
result.add(0);
int increase = 1;
for (int i = 1; i <= n; i++) {
for (int j = result.size(); j > 0; j--) {
result.add(increase + result.get(j - 1));
}
increase *= 2;
}
return result;
}
}
결과
설명
-
0부터 1 비트만 변경하면서 $2^n - 1$ 까지의 숫자들을 순차적으로 List에 넣어 반환하는 문제이다.
- 문제를 풀기 위한 변수를 정의한다.
- 결과를 반환하기 위한 변수인 List를 정의하여 초기 값인 0을 넣어준다.
- 2의 배수 증가치로 사용하기 위한 변수 increase를 정의한다.
- 1부터 n까지 반복하여 결과를 만들어 준다.
- 변수 result에 포함된 값들을 역순으로 활용하여 result에 $increase + result.get(j - 1)$ 값을 result에 다시 넣어준다.
- 위의 반복이 종료되면 increase 값을 2배로 증가시킨다.
- 반복이 완료되면 모든 값을 result에 넣었으므로, 변수 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기