面试之路(27)-链表中倒数第K个结点

来源:互联网 发布:世界域名 编辑:程序博客网 时间:2024/04/29 08:56

代码的鲁棒性:

所谓的鲁棒性是指能够判断输入是否合乎规范,能对不和规范的程序进行处理。
容错性是鲁棒性的一个重要体现。
防御性编程有助于提高鲁棒性。

切入正题,我可不是标题党:

链表倒数第k个节点

列表java类

public class ListNode{    int key;    ListNode next;}

思路:

采用双指针的思路,初始化两个listNode,First和second。
first先走k-1步,然后两个一直往后遍历,直到First.next == null.
注意head为空和k 《= 0,以及k大于链条的长度。

代码:

public ListNode findKthToTail(ListNode head,int k){        if(head == null||k <= 0){            return null;        }        ListNode first = head;        ListNode second = null;        for(int i = 0;i < k-1;i++){            if(first.next != null){                first = first.next;            }else{                return null;            }        }        second = head;        while(first.next != null){            first = first.next;            second = second.next;        }        return second;    }
2 0
原创粉丝点击