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