2026/1/16 10:27:39
网站建设
项目流程
张家口市建设局网站,阿里云做的网站为啥没有ftp,php网站开发岗位要求,一男一女做那个的动漫视频网站链表的题目#xff0c;如果涉及到对头节点的改动的话#xff0c;就必须要用个哨兵节点dummy来执行头节点#xff0c;不然不好多头节点进行移除或者换位的操作。 两两交换链表中的节点
/*** Definition for singly-linked list.* type ListNode struct {* Val int* …链表的题目如果涉及到对头节点的改动的话就必须要用个哨兵节点dummy来执行头节点不然不好多头节点进行移除或者换位的操作。两两交换链表中的节点/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */funcswapPairs(head*ListNode)*ListNode{dummy:ListNode{Next:head}pre:dummyforhead!nilhead.Next!nil{// 第一步由dummy位置指向2pre.Nexthead.Next// 存储位置3nxt:head.Next.Next// 第二步由位置2指向位置1head.Next.Nexthead// 第三步由位置1指向位置3head.Nextnxt prehead headhead.Next}returndummy.Next}删除链表的倒数第N个节点可以用双指针来做这道题注意这里的位置问题首先快指针因为要从dummy开始走起所以它要走n1步所以第一次循环更新fast的位置时要让它从0遍历到n这样待会slow和fast一起走的时候当fast走到nil时slow刚好走到倒数第n个数的前一个位置。/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */funcremoveNthFromEnd(head*ListNode,nint)*ListNode{dummy:ListNode{Next:head}// 采用双指针slow,fast:dummy,dummyfori:0;in;i{// 注意i要 n,因为是从dummy开始走的// 所以要走n步slow待会才能走到删除节点的前一个位置fastfast.Next}forfast!nil{fastfast.Next slowslow.Next}slow.Nextslow.Next.Nextreturndummy.Next}链表相交的位置这道题可以一起遍历两条链表如果两条链表的长度不一的话可以把两条链表连起来遍历比如说用 l1l2分别指向两条链表headAheadB当l1把headA遍历完之后再指向headB继续遍历当l2把headB遍历完之后再指向headA继续遍历这样最多O(2n)就能够找到相交的节点。/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */funcgetIntersectionNode(headA,headB*ListNode)*ListNode{l1,l2:headA,headBforl1!l2{ifl1!nil{l1l1.Next}else{l1headB}ifl2!nil{l2l2.Next}else{l2headA}}returnl1}