876_链表的中间结点
876_链表的中间结点
package 链表; /** * https://leetcode-cn.com/problems/middle-of-the-linked-list/ * @author Huangyujun * */ public class _876_链表的中间结点 { 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 ListNode middleNode(ListNode head) { //先获得链表的长度,细节错误:头指针在这里已经移动到末尾了,导致后边的移动发生错误,修改为临时指针tmp来辅助 int len = 0; // while(head != null) { // len++; // head = head.next; // } ListNode tmp = head; while(tmp != null) { len++; tmp = tmp.next; } //如果是奇数,例如7,/2(int)=3,可以移动 3 步 1 2 3 4 5 6 7 //如果是偶数,例如 8,/2(int)=4, 1 2 3 4 5 6 7 8 // 移动 /2(int) 步即可 int mid = len / 2; while(mid-- > 0 && head != null) { head = head.next; } return head; } }
本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/15709089.html