LeetCode简单题之只出现一次的数字
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之只出现一次的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
來源:力扣(LeetCode)
解題思路
??這個題想要寫出來不難,難的是原地解決問題。如果沒有限制的話建一個頻率表找到頻率為1的值就可以了。
class Solution:def singleNumber(self, nums: List[int]) -> int:d={}for i in nums:d[i]=d.get(i,0)+1for i,j in d.items():if j==1:return i
??如果加上限制條件的話,思維不發散是很難想到異或運算的。在leetcode的官方中給出了一個符合條件且空間復雜度為O(n)的方法,就是利用異或運算的性質。
class Solution:def singleNumber(self, nums: List[int]) -> int:temp=0for i in nums:temp^=ireturn temp
總結
以上是生活随笔為你收集整理的LeetCode简单题之只出现一次的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之词典中最长的单词
- 下一篇: LeetCode简单题之排列硬币