今年秋招第一次面试,小米后端研发问了这个问题,当时真的是脑袋晕啊,一点面试技巧都不懂...
以自己的实力,这种题目轻轻松松撕了...

维护三个指针左、中、右,边向后移动,边改变指针指向的方向。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode l = head, m = head.next, r; // 左节点、中节点、右节点
        head.next = null;
        while (m != null) {
            r = m.next;
            m.next = l;
            l = m;
            m = r;
        }
        return l;
    }
}