1.计算机网络
湖科大计网
2.算法
07 链表相交
(1)求出2链表的长度
(2)让长的链表的指针移动至和短链表的指针对齐
(3)一起移动两个指针并判断指针是否相等
142 环形链表
(1)怎么判断有环
快慢指针法:
快指针fast每次走2步,慢指针slow每次走一步,有环就一定能遇上
(2)怎么找到环的入口
假设从头结点到入口节点的节点数为x,fast指针和slow指针相遇节点数为y,相遇节点到入口节点为z
相遇时,slow走了x+y
fast走了x+y+n*(y+z),y+z是一个环包括的节点数
而fast走过的节点数是slow的2倍
所以2*(x+y)= x+y+ n*(y+z)
要求的是x
x= n*(y+z) -y,这里n一定大于1,因为只有fast多走一圈才可能相遇slow
=》x = (n-1)(y+z)+z
=》x=z
不管多走了几圈,相遇节点就是入口节点
3.Java基础
哈希表
(1)概述
给每份数据分配一个编号,放入表格(数组)
建立编号与表格索引的关系,将来可以通过编号快速查找数据
a.理想情况编号当唯一,数组能容纳所有数据
b.现实是不能为了容纳所有数据造一个超大数组的,编号也可能有重复
解决:
a.有限长度的数组,以链表方式存储数据
b.允许编号适当重复,通过数据自身进行区分