136. Single Number /137. Single Number II

136 single number這題是從一串都出現(xiàn)過2次的數(shù)字里找出只出現(xiàn)了1次的那個數(shù)字,137 single number II 是從一串都出現(xiàn)過3次的數(shù)字里找出只出現(xiàn)了1次的那個數(shù)字相叁。

136

有4種做法。

  1. brute force
    對每個數(shù)字都向左右搜索踪危,看有沒有重復(fù)的步脓,沒有就輸出∠踉恚或者顷窒,用一個list蛙吏,遇到第一個的時候add,遇到第二個時候remove鞋吉。時間都是O(n2)鸦做。

  2. HashMap
    記錄每個數(shù)字出現(xiàn)的次數(shù)。不夠最后還要遍歷一遍谓着。時間是O(n)泼诱。

  3. Math
    用set保存數(shù)字,2?(a+b+c)?(a+a+b+b+c)=c赊锚,最后singleSum *2 - sum就是結(jié)果治筒。問題是如果數(shù)字是INTEGER的最大值,加起來或者乘法都會溢出舷蒲。

  4. 位運(yùn)算
    a⊕b⊕a=(a⊕a)⊕b=0⊕b=b

137

上述1,2,3都適用耸袜,3仍有溢出問題,4不適用了牲平。

我有種方法堤框,先排序,然后用一個count=3 來遍歷纵柿,如果后一項(xiàng)等于前一項(xiàng)蜈抓,那count--,否則判斷count 如果不等于1昂儒,return 前一位沟使,等于一就把count置3然后跳過本次循環(huán)。時間是O(nlogn)渊跋。

這題太難了腊嗡,bit manipulation真是太難了:
這個O(32n)的方法稍微好理解點(diǎn):
https://discuss.leetcode.com/topic/43166/java-o-n-easy-to-understand-solution-easily-extended-to-any-times-of-occurance
考慮:

...000111000...
...001001000...
...000111000...
...000111000...

public int singleNumber(int[] nums) {
    int ans = 0;
    for(int i = 0; i < 32; i++) {
        int sum = 0;
        for(int j = 0; j < nums.length; j++) {
            if(((nums[j] >> i) & 1) == 1) {
                sum++; //把每一個數(shù)字同一位的1加起來撤缴,0不用動
                sum %= 3; //到3就set到0
            }
        }
        if(sum != 0) {
            ans |= sum << i;//把sum(其實(shí)就是1,如果出現(xiàn)兩次的話叽唱,也可以為2)復(fù)原到原來的位置
        }
    }
    return ans;
}

參考:http://www.reibang.com/p/951100bb18c7

我覺得位運(yùn)算的題目不太容易考,很晦澀微宝,看得很絕望棺亭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蟋软,隨后出現(xiàn)的幾起案子镶摘,更是在濱河造成了極大的恐慌,老刑警劉巖岳守,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凄敢,死亡現(xiàn)場離奇詭異,居然都是意外死亡湿痢,警方通過查閱死者的電腦和手機(jī)涝缝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來譬重,“玉大人拒逮,你說我怎么就攤上這事⊥喂妫” “怎么了滩援?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長塔嬉。 經(jīng)常有香客問我玩徊,道長,這世上最難降的妖魔是什么谨究? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任恩袱,我火速辦了婚禮,結(jié)果婚禮上记盒,老公的妹妹穿的比我還像新娘憎蛤。我一直安慰自己,他們只是感情好纪吮,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布俩檬。 她就那樣靜靜地躺著,像睡著了一般碾盟。 火紅的嫁衣襯著肌膚如雪棚辽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天冰肴,我揣著相機(jī)與錄音屈藐,去河邊找鬼榔组。 笑死,一個胖子當(dāng)著我的面吹牛联逻,可吹牛的內(nèi)容都是我干的搓扯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼包归,長吁一口氣:“原來是場噩夢啊……” “哼锨推!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起公壤,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤换可,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厦幅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沾鳄,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年确憨,在試婚紗的時候發(fā)現(xiàn)自己被綠了译荞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡休弃,死狀恐怖磁椒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玫芦,我是刑警寧澤浆熔,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站桥帆,受9級特大地震影響医增,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜老虫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一叶骨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祈匙,春花似錦忽刽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至些阅,卻和暖如春伞剑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背市埋。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工黎泣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恕刘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓抒倚,卻偏偏與公主長得像褐着,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子托呕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容