題目如下:現有7瓶藥,其中有一瓶毒藥,喝了之後1小時後才產生效果,現在你有1個小時的時間,請問找出那瓶毒藥最少需要多少只老鼠?
現在有3只老鼠,那麼我們以老鼠的死和排序作為一瓶藥的編號。例如:
001 代表第一瓶藥
010代表第二瓶藥
011代表第三瓶藥
100、101、110、111一次類推
將所有編號第1位是1的分在第1組,編號第2位是1的分在第2組,編號第3位是1的分在第3組。
因此,第一只老鼠(從右往左數)要喝的有1、3、5、7 四瓶藥,第二隻老鼠要喝的有2、3、6 、7三瓶藥,第三隻老鼠喝的是4、5、6、7 四瓶藥。
第一只老鼠死了代表第一瓶是毒藥,第二隻死了代表第二瓶是毒藥,第一和第二都死了代表第3瓶是毒藥,第三隻死了代表第4瓶是毒藥,第一和第三死了代表第5瓶是毒藥、、、以此類推
用10只老鼠可以找出1024瓶水中的1瓶毒藥
找出陣列中2個只出現1次的數,其他數都出現2次
原文 問題描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 按位異或性質 將數轉化成2進製,2個數相同異或為0,2數不同異或為1 0 0 0,1 1 0 0 1 1。與1異或,得該位元素的反,與0異或,得該位...
找出2n 1個數中不成對的那個
問題定義 有2n 1個數,只有乙個單著,別的都是成對的,找出這個單著的數。比如 2 1 3 2 1。3是答案。思路一 暴力搜尋 每個數都和其他數比較,找不到相同的,就得到了結果。時間複雜度為o n2 思路二 排序搜尋 先給序列排個序,之後從前往後一對一對的找,直到不是成對的為止。時間複雜度,怎麼也得...
找出2n 1個數中不成對的那個
用o n 複雜度搞定。異或操作 對於位操作 相同為0,相異為1.比如 1 0 1,1 1 0 這樣 對於2,1,3,2,1,2 2 1 1 3 3.如此就能將不成對的3找出來。異或具有交換律,所以可以按順序計算,2 1 3 2 1 3。如下 include include include int a...