1.two sum
解法有暴力算法和哈希冲突算法
暴力算法两次循环 o(n^2) 里面一次仍需要循环但初始值为外面循环+1
哈希冲突 o(n) 里面一次是o(1) 直接查哈希 containskey
为什么哈希是o(1) 因为哈希存储相当于存在一个数组 哈希冲突解决存放数据的方法 哈希函数找出值得下标 可能是5 可能是6次甚至更多 但是远小于n 所以o(1)级别
2.Longest Palindromic Substring
暴力法 不应该由最左右两边开始,而应该从内部最里面开始+1 -1
双指针篇
1..双指针 结果唯一时 相加值比结果大时 ed移动而st不会移动
while(st<ed):
res=numbers[st]+numbers[ed]
if(res>target):
ed-=1
elif(res<target):
st+=1
else:
return [st+1,ed+1]
st移动时结果多值时候出现
2..关于x*x与x**2的问题
Why v*v is faster than v**2 in python - Stack Overflow
效果一样性能竟然差了3倍?!
**2要回调cpu的运算指令,x*x只需要python软件层面上运算
3..判断存在时,用set比list快
判断一个链是否在某处开始循环
思想:
1.无限循环 无法简单写出来
2.一开始打算先存数据进list 同时比较next是否在list 有的话 判断next存在时,链在这里跟next这里是否相等 但是由于会存在大量数值相等数据 所以不能使用
3.构造一个双齿轮结构,一个转一格,另一个转两格,总会出现两个齿轮重合的情况 不然会next之后none也能直接判断不存在环结构