Leetcode Biweekly Contest

楼主: 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
作者: sustainer123 (caster)   2024-10-13 10:04:00
你怎么那么猛
作者: napacabbage (兴奋大白菜)   2024-10-13 10:04:00
你好认真
作者: DJYOSHITAKA (Evans)   2024-10-13 10:05:00
我是垃圾

Links booklink

Contact Us: admin [ a t ] ucptt.com