思路一:遍历链表,由于链表无法通过下标来索引,所以遍历的时候,将节点存储到数组中,然后返回arr[length/2]的元素。知道这个关系,是本题目的一个关键。
/**
* 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[] arr = new ListNode[100];
int n = 0;
while(head != null){
arr[n] = head;
n++;
head = head.next;
}
return arr[n/2];
}
}
数组的声明定义还是不太熟练,需要加强。