精華區beta Marginalman 關於我們 聯絡資訊
這次第三題沒有想出來 只寫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--; } now[nown+1] = '1'; int pain = toint(now)-1; res[i] = pain; if((pain|(pain+1) )!= nums[i]) res[i] = -1; } return res; } }; ``` 第3題 這題是dp 但我沒有想出來 第4題 沒看 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.19.26 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1728785004.A.C83.html
sustainer123: 你怎麼那麼猛 10/13 10:04
napacabbage: 你好認真 10/13 10:04
DJYOSHITAKA: 我是垃圾 10/13 10:05