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

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐