链表中倒数第k个结点java

题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。

思路:两个指针,需要注意链表总数是否少于k。

/*
	 * 求链表的倒数第k个结点
	 */
	public static ListNode findKthToTail(ListNode head,int k){
		if(head==null || k==0) return null;
		ListNode first = head;
		ListNode behind = head;
		for(int i=0; i<k-1; i++){
			if(first.next!=null)
				first = first.next;
			else{
				return null;
			}
		}
		while(first.next!=null){
			first = first.next;
			behind = behind.next;
		}
		return behind;
	}

当我们用一个指针遍历链表不能解决问题的时候,可以尝试用两个指针来遍历链表。可以让其中一个指针遍历的速度快一些(比如一次在链表上走两步),或者让它先在链表上走若干步


版权声明:本文为u013238950原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。