链表的中间节点 leetcode 876
题目大意:给定一个链表,找到其中间的节点,如果中间是两个就找到后一个节点
解题思路:设定两个链表指针,第一个指向head,第二个指向第一个的下两个节点,这样始终会比第一个快2倍,也就形成了切割,如果说第二个节点的next或者第二个节点为空了就说明走到末尾了,此时返回第一个指针所指向的节点即可解答该题
/**
* 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; }
* }
*/
class Solution {
public ListNode middleNode(ListNode head) {
ListNode fast = head, slow = head;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
}
标签:ListNode,val,1204,fast,next,链表,节点
From: https://www.cnblogs.com/hgao/p/18587419