leetcode-5.5[217. 存在重複元素、205. 同構字符串、204. 計數質數](python實現)

題目1

在這裏插入圖片描述

題解1

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        seen = set()
        i = 0 
        n = len(nums)
        while i < n:
            if nums[i] not in seen:
                seen.add(nums[i])
            else:
                return True
            i += 1
        return False

附上題目鏈接

題目2

在這裏插入圖片描述

題解2

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        # 判斷每個元素的位置
        return [s.index(i) for i in s] == [t.index(i) for i in t]

附上題目鏈接

題目3

在這裏插入圖片描述

題解3

class Solution(object):
    def countPrimes(self, n):
        """
            埃拉託斯特尼篩法
        """
        if n < 2:
            return 0
        
        # 初始化,默認每一值爲1
        isPrime = [1] * n
        isPrime[0] = isPrime[1] = 0   # 0和1不是質數,先排除掉

        # 埃式篩,把不大於根號n的所有質數的倍數剔除
        #首先從 2 開始,我們知道 2 是一個素數,那麼 2 × 2 = 4, 3 × 2 = 6, 4 × 2 = 8... 都不可能是素數了。
        #然後我們發現 3 也是素數,那麼 3 × 2 = 6, 3 × 3 = 9, 3 × 4 = 12... 也都不可能是素數了。
        # 從2*2開始到n的倍數包括了2*3,所以3不用從3*2開始,直接從3*3開始

        for i in range(2, int(n ** 0.5) + 1):
            if isPrime[i]:
                # ((n - 1 - i * i) // i + 1) 記錄下i**i到n中的i倍
                isPrime[i * i:n:i] = [0] * ((n - 1 - i * i) // i + 1) 

        return sum(isPrime)

附上題目鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章