(nice!!!)LeetCode 3133. 数组最后一个元素的最小值(位运算)
·
3133. 数组最后一个元素的最小值


思路:每个数都需要有x,那最小的数一定是x,接下来就还有n-1个数。这n-1个数需要放置在x的二进制非1的坑位(不够的话,就在最后面加入新的0坑位)。如何放才最小,那自然是将n-1的二进制形式直接放在0坑位上啦!
class Solution {
public:
long long minEnd(int n, int x) {
//最小数为x
n--;
//res表示第n个数的最小值
long long res=x;
//i来枚举res的二进制位,j来枚举n的二进制位
int i=0,j=0;
while(n>>j){
if((res>>i&1)==0){
//需要将res空位填入n的第j个比特值
res|=((long long)(n>>j&1)) << i;
j++;
}
i++;
}
return res;
}
};
更多推荐
所有评论(0)