1、题目描述
2、题目分析
①题目要求是求倒数第k个结点,定义head1,head2结点指针指向pHead结点
②从i->k,head1先走k个结点,在走k个结点的时候,如果head1为空了。也就是题目中所说的,链表长度小于K值得情况
③当head1到k个位置得时候,此时head1,head2一起往右走,直到head1指向链表得最后一个结点。
注意:最后结果返回的是以head2为开始的链表,ListNode list2 为链表
3、代码实现
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode FindKthToTail (ListNode pHead, int k) {
// write code here
// 判断链表是否为空
if(pHead == null){
return pHead;
}
// 定义两个结点指针
ListNode head1 = pHead;
ListNode head2 = pHead;
// 第一个指针往右走K个单位
for(int i = 1;i <= k;i++){
// 判断链表的长度小于K
if(head1 == null){
return head1;
}
head1 = head1.next;
}
while(head1 != null){
head1 = head1.next;
head2 = head2.next;
}
return head2;
}
}
争取提前批,校招前刷1000+道,笔试不再是我的拦路虎,而是垫脚石!