刷题的一点备忘。
对同行元素分开: 1
2
3
40 1
0 2
1 2
3 4
代码:
1 | ... |
对数组sort: 1
2...
set_str.sort()
对字典sort: 1
2
3...
for each in sorted(hashmap):
print(each,hashmap[each])
hashmap高效写法: 1
2
3
4if 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 | ord('a') |
字符在ACSII码范围内(0~127),如下判断: 1
2
3
4if ord(element)<0 or ord(element)>127:
continue
else:
....
字符串的反向取值,比如输入为1234,输出为4321 1
2
3
4
5in_str = input()
n = len(in_str)
for i in range(n-1,-1,-1):
element = in_str[i]
...
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 1
2
3n = int(input())
n = bin(n)
print(n.count('1'))
背包问题: 解题:https://blog.nowcoder.net/n/82b5f014a8654c8b8dbff4fe4fa727bd?f=comment 视频:https://b23.tv/MMa9fU
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
Python 中常见有三种幂计算函数: * 和 pow() 的时间复杂度均为 O(loga) ;而 math.pow() 始终调用 C 库的 pow() 函数,其执行浮点取幂,时间复杂度为 O(1) 。
先直接算 n/3次连乘然后再根据余数的情况来再除回去(打比方 最后的余数为1 然后想着最后的答案是res/3*4%1000000007) 这样结果出错的原因是因为每一步都进行了取余操作,导致res有可能不是3的整数倍了 【详细见链接中的
求余运算规则
】