剑指Offer第七题:链表中倒数第k个结点

问题描述

输入一个链表,输出该链表中倒数第k个结点。

问题分析

链表都只能从第一个位置依次访问下去,其他方式无法访问,不能像数组一样方便,那么如果我们先遍历整个链表,将数据存储在节点数组中,我们直接在数组中寻找那倒数第K个结点。

算法分析

  • 如果给的链表是空,那么我们直接返回空。
  • 如果给的K值大于总节点数,那么也返回空。
  • 建立一个节点数组来存储数据,方便操作,弥补链表访问的不足

源代码

 

 1 class ListNode {
 2     int val;
 3     ListNode next = null;
 4 
 5     ListNode(int val) {
 6         this.val = val;
 7     }
 8 }
 9 public class Solution {
10 public ListNode FindKthToTail(ListNode head,int k) {
11         if(head==null)
12             return null;
13         ListNode []arry=new ListNode[10000];
14         int fag=0;
15         while(head!=null) {
16             arry[fag]=head;
17             head=head.next;
18             fag++;
19         }
20         if(k>fag)
21             return null;
22         
23         return arry[fag-k];
24     }
25 }
View Code

 

posted @ 2018-09-03 16:36  轻抚丶两袖风尘  阅读(88)  评论(0)    收藏  举报