标签:tac head [] lan .com package ext link 偶数
这是剑指offer15题的扩展
下面是自己实现的一个类似于LinkedList类,其中findMid方法是获取链表的中间节点的实现方法(在未知列表长度的情况下),大致思路如下:
1、首先在方法中定义slow 、 fast两个局部变量。
2、slow每次循环next一次,fast每次循环next两次,当fast.next==null时表示fast已经执行到达了链表的末尾,而slow刚好执行到链表的一半。
加上这个可以返回偶数个数的第一个,不加返回第二个
if(fast==null){
break;
}
package StackMin.Offer15_FindKthToTail;
public class MidLink {
public static void main(String[] args) {
ListNode head = new ListNode(1);
ListNode L2 = new ListNode(2);
ListNode L3 = new ListNode(3);
ListNode L4 = new ListNode(4);
ListNode L5 = new ListNode(5);
ListNode L6 = new ListNode(6);
head.next = L2;
L2.next = L3;
L3.next = L4;
L4.next = L5;
L5.next = L6;
findMid(head);
}
private static void findMid(ListNode head) {
ListNode slow = head;
ListNode fast = head;
// while (fast!=null){
// if(fast.next!=null){
// fast=fast.next.next;
// }else {
// break;
// }
// slow=slow.next;
// }
上下两个写法都行
while (fast != null && fast.next != null) {
fast = fast.next.next;
// 加上注释返回3,不加返回4
// if(fast==null){
// break;
// }
slow = slow.next;
}
System.out.println(slow.val);
}
}
参考 :[面试]返回链表的中间元素
标签:tac head [] lan .com package ext link 偶数
原文地址:https://www.cnblogs.com/chengpeng15/p/9870162.html