map就可以
o(n) 不適用額外空間:
int有32位,求每一位的二進位制的累加和
因為除了那個特殊數,其他數都出現三次
那麼只要乙個數x,二進位制的某一位為1,這一位就是 += 3
最後將結果%3,就是特殊數在這個位上的數
不適用額外的空間:
外層迴圈是32
內層遍歷nums
提一句:
其實這樣的話都可以,這類出現幾次的數的題都可以用這種方法解
不過出席那偶數次的可以把所有的數異或一遍就行
同假異真
classsolution
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,包含...