这是题目
先说一下我的思路:
使用快慢指针查找中间点
1.先让快慢指针都指向头结点
2.当快指针不为空并且快指针下一个结点不为空,让快指针一次走两步,慢指针一次走一步
3.当快指针走到最后,一个结点时,慢指针正好在中间结点,最后返回慢指针。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
public class Solution{
public ListNode middleNode(ListNode head){
ListNode fast=head;
ListNode slow=head;
while (fast!=null && fast.next!=null){
fast=fast.next.next;
slow=slow.next;
}
return slow;
}
}
作者:a-dong-chao-xie-pu
链接:https://leetcode.cn/problems/middle-of-the-linked-list/solution/shi-yong-kuai-man-zhi-zhen-by-a-dong-cha-wfc2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
运行结果