码迷,mamicode.com
首页 > 其他好文 > 详细

高质量代码-链表中倒数第k个结点

时间:2016-04-01 22:06:41      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

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

思路:

首先检查参数的合法性,head==null或节点数小于k都直接返回null。

让head先前进k-1步,ans指向头结点,然后head前进一步,ans也前进一步。当head到达最后一个节点时,ans指向倒数k个节点。时间复杂度O(n)。

解决:

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode FindKthToTail(ListNode head,int k) {
12        
13         ListNode ans =  head;
14         
15         if (head == null || k < 1) {
16             return null;
17         }
18         int i = k;
19         //head先前进k-1个节点
20         while (i > 1 && head.next != null) {
21             head = head.next;
22             i--;
23         }
24         //节点总数不够
25         if (i != 1) {
26             return null;
27         }
28         
29         while (head.next != null) {
30             head = head.next;
31             ans = ans.next;
32         }
33        
34         return ans;
35         
36     }
37 }

 

高质量代码-链表中倒数第k个结点

标签:

原文地址:http://www.cnblogs.com/gatsbydhn/p/5346367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!