Problem: 3133. 数组最后一个元素的最小值
class Solution {
public long minEnd(int n, int x) {
n--; // 先把 n 减一,这样下面讨论的 n 就是原来的 n-1
long ans = x;
int i = 0;
int j = 0;
while((n >> j) > 0){
// ans 的第 i 个比特值是 0,即「空位」
if((ans >> i & 1) == 0){
// 空位填入 n 的第 j 个比特值
ans |= (long)(n >> j & 1) << i;
j++; //填了之后 n 的位前移
}
// 不管ans此位是 0 是 1 都向前移一位
i++;
}
return ans;
}
}