刷题的一点备忘。

对同行元素分开:

1
2
3
4
0 1
0 2
1 2
3 4

代码:

1
2
3
4
5
...
for i in range(n):
line = input().split()
key = int(line[0])
value = int(line[1])

对数组sort:

1
2
...
set_str.sort()

对字典sort:

1
2
3
...
for each in sorted(hashmap):
print(each,hashmap[each])

hashmap高效写法:

1
2
3
4
if key in hashmap.keys():
hashmap[key] = value + hashmap[key]
else:
hashmap[key] = value

替代上面写法👆

1
dic[key] = dic.get(key,0)+value

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

1
2
ord('a')
97

字符在ACSII码范围内(0~127),如下判断:

1
2
3
4
if ord(element)<0 or ord(element)>127:
continue
else:
....

字符串的反向取值,比如输入为1234,输出为4321

1
2
3
4
5
in_str = input()
n = len(in_str)
for i in range(n-1,-1,-1):
element = in_str[i]
...

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

1
2
3
n = int(input()) 
n = bin(n)
print(n.count('1'))

背包问题: 解题:https://blog.nowcoder.net/n/82b5f014a8654c8b8dbff4fe4fa727bd?f=comment 视频:https://b23.tv/MMa9fU

剑指 Offer 27. 二叉树的镜像

Python 利用平行赋值的写法(即 a,b=b,a ),可省略暂存操作。其原理是先将等号右侧打包成元组 (b,a) ,再序列地分给等号左侧的 a,b 序列。

前缀和:https://mp.weixin.qq.com/s/pMcdYAy5W_01zuch5wkCyA

python set不能添加list,dict, set的原因。https://blog.csdn.net/qq_35721743/article/details/103064509

split()与split("")区别

排序算法汇总

剪绳子的数学推导

Python 中常见有三种幂计算函数: * 和 pow() 的时间复杂度均为 O(loga) ;而 math.pow() 始终调用 C 库的 pow() 函数,其执行浮点取幂,时间复杂度为 O(1) 。

利用大数求余解法剪绳子

先直接算 n/3次连乘然后再根据余数的情况来再除回去(打比方 最后的余数为1 然后想着最后的答案是res/3*4%1000000007) 这样结果出错的原因是因为每一步都进行了取余操作,导致res有可能不是3的整数倍了 【详细见链接中的求余运算规则