【剑指offer】链表中倒数第k个节点

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a

题目描述
输入一个链表,输出该链表中倒数第k个结点。
1、思路分析
使用左右两个指针,一开始left和right均指向头结点,left保持不变,right向右移动k-1次,外层循环控制移动次数,循环体中每次循环时判断right是否为空,如果为空,直接返回null,否则继续移动。第一次循环结束后,需要再次判断最后一次移动后right是否为空。第二次循环同时移动左右两个结点,注意,这时需要判断的是right是否是链表的最后一个结点,因此判断条件为right.null != 0,正是这里错了所以一直未提交成功,需要特别注意每次判断的目的是什么。最后返回left就好。
2、代码

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        ListNode left = head;
        ListNode right = head;
        int i = k-1;
        while(i-- != 0) {
            if(right != null) {
                right = right.next;
            }
            else return null;
        }
        if(right == null) return null;
        while(right.next != null) {
            left = left.next;
            right = right.next;
        }
        return left;
    }
}
全部评论

相关推荐

02-04 17:01
南昌大学 Java
牛客96763241...:拿插件直接投就完了,这玩意看运气的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务