劍指 Offer II 004 只出現一次的數字

2022-10-09 06:51:07 字數 855 閱讀 8758

map就可以

o(n)  不適用額外空間:

int有32位,求每一位的二進位制的累加和

因為除了那個特殊數,其他數都出現三次

那麼只要乙個數x,二進位制的某一位為1,這一位就是 += 3

最後將結果%3,就是特殊數在這個位上的數

不適用額外的空間:

外層迴圈是32

內層遍歷nums

提一句:

其實這樣的話都可以,這類出現幾次的數的題都可以用這種方法解

不過出席那偶數次的可以把所有的數異或一遍就行

同假異真

class

solution

temp %= 3

; ret

<<= 1

; ret +=temp;

}return

ret;

}};

map

class solution(object

): def singlenumber(self, nums):

""" :type nums: list[int

] :rtype:

int"""

dic ={}

for num in

nums:

dic[str(num)] = 0

for num in

nums:

dic[str(num)] += 1

for num in

nums:

if(dic[str(num)] == 1

):

return num

劍指 Offer II 001 整數除法

難度 簡單 輸入2個int型整數,它們進行除法計算並返回商,要求不得使用乘號 除號 及求餘符號 當發生溢位時,返回最大的整數值。假設除數不為0。例如,輸入15和2,輸出15 2的結果,即7。這個題目限制我們不能使用乘號和除號進行運算。乙個直觀的解法是基於減法實現除法。例如,為了求得15 2的商,可以...

劍指 Offer II 001 整數除法

為了方便描述,我們考慮a和b都為正數的情況,之後再考慮其他情況。最直接的思路就是將b乙個乙個的累加,至到累加的結果超過了a,即可得到答案。以a 18,b 5為例,此過程如下圖所示 這個作法通俗易懂,但效率不高,舉個極端例子,當a 2 31 1 b 1時,要將b加2 31 1次才能算出結果。下面給出優...

劍指Offer II 左旋轉字串

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串 abcdefg 和數字2,該函式將返回左旋轉兩位得到的結果 cdefgab 一行 沒什麼好說的,複習substr用法 形式 s.substr pos,n 解釋 返回乙個string,包含...