指对所学知识进行深入思考后的总结和反思,旨在促进自我认识和提升学习效果
包含的分类:
- 观点思考
- 人生感悟
指对所学知识进行深入思考后的总结和反思,旨在促进自我认识和提升学习效果
包含的分类:
这里没有记住,需要在吸收下 链表反转 206. 反转链表 for循环处理 时间复杂度O(N)(循环整个链表),空间复杂度O(1),只有几个临时变量 其实链表反转,无非就是上面这张图。 记录current的next节点(因为这里current的next需要指向pre) 把current的next指向pre 把current节点变成pre节点 把next节点变成current节点 最后当current节点变成空时,pre节点就是反转后的链表 代码如下: if head == nil || head.Next == nil { return head } current := head // 把头指向当前 var pre *ListNode // 做一个pre节点 for current != nil { next := current.Next // 1.记录当前的下一个节点 current.Next = pre // 2.把当前的next指向pre pre = current // 3.把current节点变成pre节点 current = next // 4.把next节点变成current节点 } return pre 迭代处理 核心思想:“2”节点后面的额所有元素都进过反转了,但是head“1”节点的next还是指向了“2”,所以可以直接把“2”的next指向head,这样就有反转后的链表了 if head == nil || head....
到现在面试经历过很多次了,却很少有成功,之前拒掉了几次面试,现在非常后悔。 这里记录下之前面试的他们的算法题 1. 如何判断一个链表有环 快慢指针可以解决这个问题 使用快慢指针。这里为什么会相遇?最坏的打算当慢指针走一圈的时候,快指针可以走两圈,所以刚好会在同一个点上面。 如果最后指向null,则说明没有环,如果最后走到了相同点,则说明有环。 如何判断该环的起点在什么地方 可以假设 环起点 到相遇点的距离为 m 那么head到 环起点 刚好是 k-m 因为慢指针走了 k 步快指针走了 2k 步相遇了,那么相遇点到快指针的相遇点(N圈之后的相遇点)距离就变成了 2k-k=k 距离一样。那么剪掉相同的环起点到相遇点的 m 都变成了 k-m 步。这样,把任何一个指针的头指针指向 head,用相同的速度,再次相遇点,就是环起点。 2. 两条链表是否相交 要判断两个链表是否相交,可以判断有没有共同部分,那么共同部分怎么判断呢? 最原始的办法:使用map(映射)来记录每个node的信息,java中地址值不存在,可以直接判断引用是否一致。golang可以根据地址是否一致,也可以记录value是否一致(当然存在相同的value的情况就不行了) 使用特殊手法,如下图 双指针同时进行 迭代A链表,结束后,迭代B链表 迭代B链表,结束后,迭代A链表 在迭代的时候,判断两个指针是否一致,如果存在一致 具体代码可以是 p1, p2 := headA, headB for p1 != p2 { if p1 == nil { p1 = headB } else { p1 = p1.Next } if p2 == nil { p2 = headA } else { p2 = p2....
以下内容属于遐想,并非真实 在宇宙诞生之前,存在着无限寿命的灵魂,它们融合后形成了宇宙。这时宇宙中出现了一个强大的“帝国文明”,由于“帝国文明”的庞大,也出现了一些坏人,因此遥远的地球被用作监狱。地球被建立了一个保护罩,防止这些坏人逃离并被植入两个概念:向往光明和留在地球。随着时间的推移,“帝国文明”内部发生动乱,叛乱者也被送到地球监狱。 由于这些灵魂无法在地球上生存,它们只能寄生于地球上的生物,如类人猿。这些灵魂植入寄生体后,保护罩会封存它们的记忆,并将它们送回地球上进行寄生。 直到另一个“领地文明”出现后,与“帝国文明”进行了战争,而地球正好位于两个文明的交叉地带。当交战开始时,领地文明发现了地球,想破坏保护罩救出地球上的灵魂。他们派出了3000勇士,但貌似没有成功。在这些勇士的领导下,地球上的苏美尔文明、埃及文明等得以诞生。 最终,领地文明战胜了帝国文明,但地球不适合灵魂居住,因此领地文明并未继续投入资源,只会巡查并维护整个宇宙的稳定。当地球上出现核信号时,会有飞船来扫描并确认安全后离去。 而地球外层保护罩存在周期性减弱,当减弱时,会出现一些引领地球快速发展的人物,如牛顿、莱布尼茨、胡克、哈雷、列夫托尔斯泰和亚历山大等。
DevOps 运维相关的知识点