當乙個數為2的n 次方時,整個二進位制數,只有本位是1 其他位為0,如果我們給這個數減一,那麼本位變為0 其他位全部變成1;我們可以通過&運算, 如果為0即為2的n次方;
def is2n(self, n):
if n == 0:
return true
res = n & (n-1)
return res==0
或者直接通過:
return bitset<32>(n).count() == 1
就可以檢測
a=a+b;
b=a-b;
a=a-b;
根據以上分析,把100分成6個一組,餘數是幾,我就先拿幾個,
100÷6=16(組)…4(個)
先拿4個,他拿1~5中的n個,我拿6-n,依此類推,保證我能得到第100個桌球。
先手必勝類題目,leetcode上面有很多:
leetcode第 292 題:nim遊戲(c++)_zj-csdn部落格
leetcode 第 1025 題:除數博弈(c++)_zj-csdn部落格
位運算:
//位運算應用
#include #include using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int n;
int a[maxn];
void found()
兩層for迴圈,比如:
第一層異或:123345
第二層異或:12345
總的來說,只有3出現了3次,其他的都是兩次
有點像leetcode第 268 題:缺失數字(c++)_zj-csdn部落格
採用2-bitmap(每個數分配2bit,00表示不存在,01表示出現一次,10表示多次,11無意義)進行,共需記憶體2^32 * 2 bit=1 gb記憶體,還可以接受。然後掃瞄這2.5億個整數,檢視bitmap中相對應位,如果是00變01,01變10,10保持不變。所描完事後,檢視bitmap,把對應位是01的整數輸出即可。
1-(1-p)^3
問題:有一棟100層高的大樓,給你兩個完全相同的玻璃球。假設從某一層開始,丟下玻璃球會摔碎。
那麼怎麼利用手中的兩個球,用什麼最優策略知道這個臨界的層是第幾層?
100層高的大樓,丟玻璃球的問題_其實我也有夢想-csdn部落格
這個解析說的挺好了。
知乎:有哪些令人拍案叫絕的演算法? - 知乎
關鍵點在於均勻。
大小端_hgxy123的部落格-csdn部落格
#include #include using namespace std;
int main()
LeetCode 其他題目記錄
104.maximum depth of binary tree 和111很像,只是遞迴的結構略有不同,可簡單畫圖分析,求最大深度可以直接返回1 max 左子樹深度,右子樹深度 但是求最小深度時不可以,需要分別考慮左右子樹為空的情況。可以舉個反例子,比如,單斜樹。1 class solution 7...
其他題目 設計RandomPool結構
題目 設計一種結構,在該結構中有如下三個功能 1 insert key 將某個key加入到該結構,做到不重複加入 2 delete key 將原本在結構中的某個key移除 3 getrandom 等概率隨機返回結構中的任意乙個key 要求所有的操作時間複雜度都是o 1 基本思路 對每個元素都加上乙個...
其他題目 分糖果問題
題目 一群孩子做遊戲,現在請你根據遊戲得分來發糖果,要求如下 1 每個孩子不管得分多少,起碼分到1個糖果 2 任意兩個相鄰的孩子之間,得分較多的孩子必須多拿一些糖果 給定乙個陣列arr代表得分陣列,請返回最少需要多少糖果。例如 arr 1,2,2 糖果分配 1,2,1 即可滿足要求且數量最少,所以返...