1922.统计好数字的数目

class Solution:
    def countGoodNumbers(self, n: int) -> int:

1.创建一个Solution
2.定义一个countGoodNumbers函数
3.该函数接受自身和一个整数n作为输入
4.该函数会返回一个整数 以-> int作为标示

5.提前定义MOD防止溢出
6.幕运算使用**(底数)**(指数);求余数使用%;异或和使用^

7.python内置函数pow(a,b,MOD)快速幂运算即a ** b % MOD,可降低复杂度为log b

5.最长回文子串

longestPalindrome(self, s: str) 中,self 是类方法的第一个参数,表示该方法是类的一个成员方法即实例方法)。这个方法是定义在类中的,因此它需要接收一个类实例(self)来访问类的属性或调用其他方法。

expandAroundCenter(left: int, right: int) 则是一个普通的函数(通常可以定义在类的外部,或者类的方法中),不需要 self 参数。它是一个独立的函数,接收两个整数参数 leftright,用于执行某种操作。

longest=""
for i in range(len(s)):
	result1=ExpendAroundCenter(i,i)
	result2=ExpendAroundCenter(i,i+1)
	longest=max(longest,result1,result2,key=len)

longest=""定义一个空字符串

longest=max(longest,result1,result2,key=len)

longest是不断更新的
确保每一次赋给longest的都是目前为止三个字符串中长度最长的那个字符串
比较的是长度,更新的字符串内容

1.两数之和

暴力循环

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        result=[]
        for i in range(len(nums)):
            for j in range(len(nums)):
                if i!=j and nums[i]+nums[j]==target:
                    result.append(i)
        return result

下边是使用哈希表降低时间复杂度

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashmap = {}  # 用字典来存储数字和对应的索引
        for i, num in enumerate(nums):
            complement = target - num  
            if complement in hashmap: 
                return [hashmap[complement], i]
            hashmap[num] = i  
        return []

hashmap={}通过初始化一个空字典(哈希表)来存储数组中已遍历的元素及其索引,字典可以高效查找元素,它的查找和插入操作的时间复杂度是常数级的。
enumerate()函数会同时遍历数组 nums 中的元素 num 和索引 i, 并返回包含元素索引和元素值的元组

使用哈希表把时间复杂度降低到O(log n)

posted on 2025-04-13 19:23  HGrant  阅读(32)  评论(0)    收藏  举报