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
参数。它是一个独立的函数,接收两个整数参数 left
和 right
,用于执行某种操作。
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)