Singly Linked List常用解题技巧

  1. Iterate the LinkedList to get total length.
int len=0;
for(ListNode head = root; head != null; head = head.next) len++;
  1. Find the middle node of the LinkedList.
    use fast and slow pointers
private ListNode findMiddle(ListNode head) {
    ListNode slow = head;
    ListNode fast = head.next;
    while (fast != null && fast.next != null) {
        slow = slow.next;
        fast = fast.next.next;
    }
    return slow;
}

长度是奇数时middle是中间的数:1->2->3->4->5
长度是偶数时middle是后半部分第一个:1->2->3->4

  1. Reverse LinkedList
private ListNode reverse(ListNode head) {
    ListNode prev = null;
    while (head != null) {
        ListNode next = head.next;
        head.next = prev;
        prev = head;
        head = next;
    }
    return prev;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容