文章 2024-01-15 来自:开发者社区

golang力扣leetcode 160.相交链表

160.相交链表160.相交链表题解思路1:1.用map存A的所有节点,赋值为true 2.遍历B的节点,如果map[cnt]=true说明就是交点 思路2:1.统计A的长和B的长,谁长谁先走几步,走到长度一致位置 2.A和B一起走,遇到相同的节点返回即可 3.如果不相交,返回nil思路3:1.设链表A的不相交长为m,B不相交从部分为n,相交长为c,即len(A)=m+c,len(B)=n+c ....

文章 2024-01-15 来自:开发者社区

golang力扣leetcode 114.二叉树展开为链表

114.二叉树展开为链表114.二叉树展开为链表题解思路:1.将原来的左子树放到右子树 2.将原来的右子树,放到原来的左子树的最右边 1 / \ 2 5 / \ \ 3 4 6 //将 1 的左子树插入到右子树的地方 1 \ 2 5 / \ \ 3 4 6 ...

文章 2024-01-15 来自:开发者社区

golang力扣leetcode 23.合并K个升序链表

23.合并K个升序链表23.合并K个升序链表题解没啥含金量,就更归并排序一样,考验基本功吧代码type ListNode struct { Val int Next *ListNode } func mergeKLists(lists []*ListNode) *ListNode { dummy := &ListNode{} for _, v := range list...

文章 2024-01-15 来自:开发者社区

golang力扣leetcode 19.删除链表的倒数第N个结点

19.删除链表的倒数第N个结点19.删除链表的倒数第N个结点题解思路:1.计算链表长度1.计算链表长度 2.增加一个哑节点,遍历到倒数n+1的位置 2.栈存储节点1.存储所有节点 2.倒数n+1的节点就是nodes[len(nodes)-1-n] 3.双指针1.两个指针,步伐相同 2.快指针先移动n步 3.两个指针一起移动,直到快指针为nil 4.此时慢指针就是倒数n位置 代码func remo....

文章 2024-01-12 来自:开发者社区

golang力扣leetcode 24.两两交换链表中的节点

24.两两交换链表中的节点24.两两交换链表中的节点题解两种解法,第一种递归第二种迭代,链表题建议画图做代码package main type ListNode struct { Val int Next *ListNode } func swapPairs1(head *ListNode) *ListNode { if head == nil || head.Next == ni...

文章 2024-01-12 来自:开发者社区

golang力扣leetcode 38.复制带随机指针的链表

题解思路:复制节点,紧挨到到后面,1->2->3 ==> 1->1’->2->2’->3->3’处理random指针分离两个链表代码package main type Node struct { Val int Next *Node Random *Node } func copyRandomList(head *Node) ...

文章 2024-01-12 来自:开发者社区

golang力扣leetcode 234.回文链表

题解思路:取中点分成两个链表,翻转第二个,开始比较,注意其中一个为nil就可以停止了,因为有可能节点为奇数的情况代码package main type ListNode struct { Val int Next *ListNode } func findMiddle(head *ListNode) *ListNode { slow := head fast := head.N...

文章 2024-01-12 来自:开发者社区

golang力扣leetcode 142.环形链表II

题解map存指针找重复即可快慢指针,挺有意思的从相遇点到入环点的距离,恰好等于从链表头部到入环点的距离。1.设环外链表长为a 2.入环点到相遇点为b 3.相遇到再走回入环点为c 在相遇点 slow走的总距离:a+b fast走的总路径:a+b+(b+c)n ∵ fast走的路径是slow的两倍 ∴ a+b+(b+c)n=2(a+b) ∴ a=(n-1)(b+c)+c 所以相遇点到入环点的距离,加....

golang力扣leetcode 142.环形链表II
文章 2024-01-12 来自:开发者社区

golang力扣leetcode 141.环形链表

题解大水题,两种实现方式思路:快慢指针,快慢指针相同则有环,证明:如果有环每走一步快慢指针距离会减 1代码package main type ListNode struct { Val int Next *ListNode } func hasCycle1(head *ListNode) bool { mp := make(map[*ListNode]bool) for hea...

文章 2024-01-12 来自:开发者社区

golang力扣leetcode 143.重排链表

题解找到中点断开,翻转后面部分,然后合并前后两个链表重建该链表两种实现方式代码package main type ListNode struct { Val int Next *ListNode } //找到中点断开,翻转后面部分,然后合并前后两个链表 func reorderList1(head *ListNode) { if head == nil { return ...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

算法编程

开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。

+关注