Contents
내가 작성한 코드
내가 작성한 코드
class Solution {
public long[] solution(long[] numbers) {
long[] answer = new long[numbers.length];
// 짝수: n+1이 항상 비트 1개만 다름
// 홀수: n의 0이 처음 나오는 위치를 1로, 그 오른쪽 1을 0으로 바꿔주면 비트 2개만 다름
for (int i = 0; i < numbers.length; i++) {
long n = numbers[i];
// ~n: n의 비트를 반전
// lowestOneBit(): 비트의 가장 오른쪽 1만 남기고 0으로 만들기
// >> 1: 비트를 오른쪽으로 한칸 이동
answer[i] = n % 2 == 0 ? n + 1 : n + (Long.lowestOneBit(~n) >> 1);
}
return answer;
}
}
Share article