no.1給定乙個非空陣列,除了其中的某個元素只出現了一次之外,其餘每個元素均出現兩次,找出那個只出現了一次的元素。
說明:你的演算法應該具有時間線性複雜度。
示例:輸入:[2,2,1]
輸出:1
輸入:[4,1,2,1,2]
輸出:4
題目說完了,大部分人可以想到的正常解題思路:
class solution:
def sing_num(self, nums):
table = {}
for i in nums:
try:
table.pop(i)
except:
table[i] = 1
return table.popitem()[0]
能想出來這種方法本人感覺已經很厲害了,在o(n)複雜度內就解決了,可還有一種方法,複雜度也是一樣的
class solution:
def sing_num(self, nums):
a = 0
for i in nums:
a ^= i
return a
看完從「一臉懵逼」再到「有所領悟」再到「豁然開朗」,這種思路的人,真的厲害。
no.2給定乙個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列**現次數大於 ⌊ n/2 ⌋ 的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在眾數。
我看完題後腦**現的思路:
class solution:
def majorityelement(self, nums):
nums_set=set(nums)
most_count=0
most_num=0
for i in nums_set:
if nums.count(i)>most_count:
most_count=nums.count(i)
most_num=i
return most_num
另類的思路:
class solution:
def majorityelement(self, nums):
nums=sorted(nums)
return nums[int(len(nums)/2)]
仔細看看題目的描述,這個思路簡直了,雖然並沒有用到什麼演算法,但算是讓人眼前一亮吧。 重複插入資料的另類解決思路
在進行插入資料時,我們會先從資料庫查詢是否已經擁有該記錄,但是最後會發現這個判斷沒有任何效果,導致這個判斷失效的原因有很多,比如事務沒有提交,或者多台伺服器都執行了相同的 或者你的控制器 strut2的action,springmvc的controller等 是多例項的!該部落格旨在解決最後一種問題...
創業者的另類創富思路
另類創業 方向許多有意創業 的人都在為找到乙個合適的創業 方向而冥思苦想,這種時候乙個人的創新能力就顯得十分重要了,在創業 的主路上人滿為患的時候,創業 者不妨另闢蹊徑,利用一些 另類 的思考方式為自己找到一條獨特的創業 出路。1.反其道而行 所謂的 主流 背後一定都有被忽視的 非主流 而且一旦你看...
Oracle莫名其妙錯誤的另類思路
1 客戶端需要8.1.7或更高版本?解決方法 安裝oracle客戶端,並在 oracle product 10.2.0 目錄下,新增 netword service和 authenticated users 使用者許可權,如果還不行,還需在administrators使用者組中加入net servi...