# 1、两数之和 I
from typing import List
List:列表,list 的泛型,基本等同
变量声明形式:var: List[type] = [...]
获取控制台输入
input() 默认类型为str
若需要其他类型需要转换
map()
会根据提供的函数对指定序列做映射
map(function, iterable, ...)
思路
哈希表(字典)
键为数,值为数的序号
节省查表时间
# 1480、一维数组动态和
思路
在原数组上修改值即可
节省空间复杂度
# 1342、将数字变成0的次数
思路
位与计算判断奇偶
右移运算代替除2
进阶
二进制表示原数字
1的个数即为减一次数
总的位数为除2次数
二分法加快速度
调库
[len(bin(num)) - 2] + [str(bin(num)).count('1')] - 1
# 1672、最富有客户的资产总量
思路
直接返回 max(sum(accounts[i])) 即可
append 和 extend
list = [1,2,3]
list.append([4,5,6]) -> list = [1,2,3,[4,5,6]]
list.extend([4,5,6]) -> list = [1,2,3,4,5,6]
extend 等同于 +=
# 412、Fizz Buzz
判断是否整除3 5
思路
拼接字符串
减少判断次数
# 876、链表的中间节点
list.append(object)
实际上是给 list 添加了 object 的引用
后续如果 object 发生改变,list 也会相应地改变
为了避免可以改成 list.append(object.copy())
思路
快慢指针
# 383、赎金信
判断字符串是否可由另一个字符串中的字符组成
思路
统计两个字符串中各字符出现次数
直接比较次数大小