Java之《剑指Offer》:输入一个链表,输出该链表中倒数第k个结点。
程序员文章站
2022-04-16 09:10:15
1、题目描述:输入一个链表,输出该链表中倒数第k个结点。2、解题思路: 这也是一类题目,求链表结点的到第k个结点的值。首先定义两个头指针。 第一个指针先走K步,第二个指针原地不懂 然后当第一个指针走了k步后,第二个指针随着第一个指针往后走,第一个个指针每走一步,第二个指针也走一步,直到 第一个指针走到末尾 第二个指针指向的元素就是目标结点。 建议举个例子,画画图,走一遍,一目了然。3、代码实现:imp......
1、题目描述:
2、解题思路:
3、代码实现:
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
* 1,2,3,4,5
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode FindKthToTail (ListNode pHead, int k) {
// 首先判断头结点是否为空
if(pHead == null){
return null;
}
// 定义两个头结点
/*
第一个指针先走K步,第二个指针原地不懂
然后当第一个指针走了k步后,第二个指针随着第一个指针往后走,第一个个指针每走一步,第二个指针也走一步,直到
第一个指针走到末尾
第二个指针指向的元素就是目标结点
*/
ListNode head1 = pHead;
ListNode head2 = pHead;
// 遍历第一个指针指向的结点
for(int i = 1;i <= k;i++){
// 说明长度不够,小于k
if(head1 == null){
return null;
}
// 长度够了,head1指针往后移动,直到移动到第k个结点
head1 = head1.next;
}
// 当head1指针指向了不是最后一个结点的时候,head1,head2指针一起往后走
while(head1 != null){
head1 = head1.next;
head2 = head2.next;
}
return head2;
}
}
本文地址:https://blog.csdn.net/Sunshineoe/article/details/114274578
上一篇: mysql中#{}和${}的区别详解
下一篇: RESTful api风格介绍