楼主: 
oin1104 (是oin的说)   
2024-10-13 10:03:22这次第三题没有想出来
只写12 大概6000名
我是大便
第1  2题
给你一串阵列 对于每个数字 n
找一个数字k
让 k|k+1== n
要找到最小的k
思路
因为要最小
就想什么情况可以最有效率的弄出那个数字n
然后假设一下数字
就例如00110111
发现  00110100
跟他的-1 00110011刚好可以or出n
所以就看她右边有几个1连在一起
```cpp
class Solution {
public:
    string tobit(int k)
    {
        string kk ;
        while(k > 0)
        {
            if(k&1)kk.push_back('1');
            else kk.push_back('0');
            k >>= 1;
        }
        reverse(kk.begin(), kk.end());
        return kk;
    }
    int toint(string k)
    {
        reverse(k.begin(), k.end());
        int kk = 0;
        while(k.size() > 0)
        {
            kk <<= 1;
            kk += k[k.size()-1]-'0';
            k.pop_back();
        }
        return kk;
    }
    vector<int> minBitwiseArray(vector<int>& nums)
    {
        int n = nums.size();
        vector<int> res(n);
        for(int i = 0 ; i < n ; i ++)
        {
            string now = tobit(nums[i]);
            int nown = now.size()-1;
            while( nown >= 0 && now[nown] == '1' )
            {
                now[nown] = '0';
                nown