左神算法基础课学习笔记
...大约 3 分钟
时间复杂度:
异或运算 不同为1 相同为0
取一个数最右侧的1 eor & (~eor + 1)
mid=L + (R-L)/2 取中点 不会溢出
mid=L + ((R-L) >> 1)
快排1 <=num >num
快排2 <num =num >num
快排3 随机取num <num =num >num
手写堆
堆排序
基于比较的排序,只和俩个数比较大小有关
不基于比较的排序 要根据数据具体状况进行定制
计数排序
基数排序 低位到高位依次排序 N进制需准备N个桶。设最高M位,则出入桶的次数为M
快速排序用的最多
利用各算法优势排序 为综合排序
HashSet
HashMap
HashSet HashMap
TreeSet TreeMap
中等难度算法提不会涉及原理
快慢指针,控制慢指针指向的位置
慢指针指向:
- 奇数
中点
;偶数靠后
fast !=null && fast.next!=null
- 奇数
中点
;偶数靠前
fast.next !=null && fast.next.next!=null
- 奇数
中点靠后
;偶数靠后
slow = head.next;//慢指针先走一步
fast.next !=null && fast.next.next!=null
- 奇数
中点
考前;偶数靠前
fast = head.next //快指针先走一步
fast.next !=null && fast.next.next!=null
- 奇数
中点考前
;偶数靠前再靠前
fast = head.next.next;//快指针先走两步
fast.next !=null && fast.next.next!=null
找第一个入环节点:
1. 使用额外数据结构 set
1. 快慢指针。 快慢指针一定在环上相遇,之后快指针回到head,然后快慢指针都同时走一步,之后快慢指针相遇的位置即为第一个入环节点。
递归序
非递归实现先序、中序、后序 :
先序,后序
1. 栈弹出
1. 打印 处理
1. 先压右,再压左
1. 循环
中序:
使用左边界分解整颗数
左头右[左头]
深度优先遍历是先序遍历
宽度优先遍历使用队列实现
树型DP 【一个套路解决】
左右子树提供信息,动态处理。
用最喜欢的图的表达方式,实现所有的算法
实际应用时 只需要完成图结构的转换即可。
依赖包的引入顺序
k算法 p算法 用来生成图的最小生成树
====================================================================================================
Powered by Waline v2.15.5