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)

附上题目链接

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