leetcode【陣列】 2 只出現一次的數字 -python3
阿新 • • 發佈:2018-12-14
給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1] 輸出: 1
示例 2:
輸入: [4,1,2,1,2] 輸出: 4
試解:
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ nums.sort() i=1 while i < len(nums): if len(nums) == 1: return nums[0] if nums[0] == nums[1]: nums.remove(nums[0]) nums.remove(nums[0]) i+=1 else: return nums[0]
輸出null,錯誤原因:while迴圈語句的條件每次都會更新,迴圈還未該結束時,i已經增大很多,小於len(nums)了,故可以在while之前設定一個變數等於初始的len(nums),或者改用for語句:
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ nums.sort() for i in range(len(nums)-1): if len(nums) == 1: return nums[0] if nums[0] == nums[1]: nums.remove(nums[0]) nums.remove(nums[0]) else: return nums[0]