当前位置: 首页 > 科技观察

LeetCode问题解答寻找链表的中间节点

时间:2023-03-12 07:36:17 科技观察

今天继续讲链表算法题:求链表的中间节点。单向链表反转两个有序链表合并删除链表的倒数第n个节点找到链表的中间节点检查链表中的环题目:找到链表的中间节点给定一个非空单头节点为head的链表,返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。示例1:输入:[1,2,3,4,5]输出:此列表中的节点3(序列化形式:[3,4,5])返回的节点值为3。(节点在评价系统中的序列化表示为[3,4,5])。请注意,我们返回一个ListNode类型的对象ans,这样:ans.val=3、ans.next.val=4、ans.next.next.val=5和ans.next.next.next=NULL。示例2:输入:[1,2,3,4,5,6]输出:此列表中的节点4(序列化形式:[4,5,6])由于此列表有两个中间节点,值为3和4我们分别返回第二个节点。Solution1题目的意思比较简单,就是找中间节点。首先想到的是先计算链表的总长度,然后遍历到中间节点:publicListNodemiddleNode(ListNodehead){intn=0;ListNodecur=head;while(cur!=null){n++;cur=cur.next;}intk=0;cur=head;while(k