Python中的另類解體思路

2021-09-10 22:04:28 字數 1238 閱讀 9406

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...