1. 程式人生 > >【Leetcode】Day1 Singular number(python)

【Leetcode】Day1 Singular number(python)

markdown github ats solution algo 記錄 題目 給定 額外

開個貼記錄leetcode刷題,每天刷五道easy,刷完後刷medium,用python和c++做。今天第一天,加油!

題目

原題

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

翻譯

給定一個數組,裏面全是整數,每個數字都重復兩遍,只有一個沒有重復,找到那個不重復的數字。

註意:時間復雜度為線性,並且不占用額外內存。

鏈接

  • singular number

方法

我的方法

from collections import Counter
class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        return [k for k,v in Counter(nums).items() if v == 1]


if __name__==‘__main__‘:
    print Solution().singleNumber([1
,1,2,2,3])

輸出結果

3

結果

Wrong Answer

正確答案

import operator


class Solution:
    """
    :type nums: List[int]
    :rtype: int
    """
    def singleNumber(self, A):
        return reduce(operator.xor, A)

if __name__ == ‘__main__‘:
    print Solution().singleNumber([1, 1, 2, 2, 3])

感想

一開始疑惑為啥錯了,後來放到一起比較後,發現正確答案輸出的是int 3,我輸出的list [3],後來在return後面加上了取出這個list的值,結果就對了,但是運行速度很慢,對比一下:
- 我的答案:You are here! Your runtime beats 14.20 % of python submissions.
- github答案:You are here! Your runtime beats 66.96 % of python submissions.
為啥我的答案要慢這麽多呢?留個坑想想

【Leetcode】Day1 Singular number(python)