您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關LeetCode如何查出只出現一次的數,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1
題目描述
給定一個非空整數數組,只有一個數字出現一次,其余出現兩次,找出只出現一次的數字。如輸入[3,4,5,4,3],輸出5。
2
知識點
前兩天刷題都是建立哈希表,思維慣性第一反應又是這個。遍歷每個值,建立字典記錄出現次數,返回出現次數為1的值即可。
class Solution: def singleNumber(self, nums: List[int]) -> int: countnum=dict() for i in nums: if i in countnum: countnum[i]=countnum[i]+1 else: countnum[i]=1 for e,v in countnum.items(): if v == 1: return e
python中set表示無序不重復集合,對集合可直接求差值,得到兩個集合中不同的值。
class Solution: def singleNumber(self, nums: List[int]) -> int: nums.sort() return list(set(nums[::2]) - set(nums[1::2]))[0]
看其他人解題思路看到的方法。異或運算規則是:如果a、b兩個值不相同,則結果為1;如果a、b兩個值相同,結果為0。計算機中用二進制進行存儲,所以[3,5,3]通過異或有如下結果:3是011,5是101,兩者異或結果為110,再與3進行異或則為011^110=101,即所要的結果5。
class Solution: def singleNumber(self, nums: List[int]) -> int: res = 0 for i in nums: res ^= i return res
關于“LeetCode如何查出只出現一次的數”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。