题目:
输入一个链表,输出该链表中倒数第k个结点。
思路:
- 判断头结点为空,或者k值小于等于 0,不符合,返回null;
- 定义一个整型变量 count1 为 0,进行计数,计算链表长度;
- 判断k值是否超过链表长度,若超过,则返回null;
- 定义一个整型变量 count2 为 0,将cur重置为头结点,进行计数,一直遍历到(count2 - k +1)这正是倒数第k个节点;
- 返回节点。
图示:
代码:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head == null || k <= 0){
return null;
}
int count1 = 0;
ListNode cur = head;
while(cur.next != null){
cur = cur.next;
count1++;
}
if(k > (count1+1)){
return null;
}
int count2 = 0;
cur = head;
while(count2 < (count1-k+1)){
cur = cur.next;
count2++;
}
return cur;
}
}