今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。
每天一道剑指offer-链表中倒数第k个结点 来源:牛客网对应专题
输入一个链表,输出该链表中倒数第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) {
int length = 0;
ListNode tempHead = head;
while(tempHead != null)
{
length++;//这里计算链表的长度
tempHead = tempHead.next;
}
if(k > length || k <=0)//因为倒数第K个节点,如果超过链表长度可不行呀
return null;
ListNode before = head;
ListNode after = head;
for(int i=0;i<k-1;i++)快指针先走k-1步
before = before.next;
while(before.next != null)
{
before = before.next;
after = after.next;//快慢指针一起走。
}
return after;
}
}
代码截图(为了避免代码排版错乱)