每日AC-剑指Offer 链表中倒数第k个结点
2017-06-01 09:01
621 查看
剑指Offer 链表中倒数第k个结点
时间限制:1秒 空间限制:32768K 热度指数:164855本题知识点: 链表
算法知识视频讲解
题目描述
输入一个链表,输出该链表中倒数第k个结点。没啥难度, 解决办法, 第一反应是用快慢指针方式实现, 也许C++ 写出来的感觉会更好,注意判断边界,异常情况等。
看源码:
public class ListNode {
public int val;
public ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
AC代码:Java版本
public class FindKthToTailSolution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head == null){
return head;
}
int size = 0;
ListNode tmp = head;
while(tmp != null){
tmp = tmp.next;
size++;
}
if(size < k){
return null;
}
// 快慢指针的方式求倒数第K个数
ListNode slow = head, fast = head;
int count = 0;
while(count < k){
fast= fast.next;
count++;
}
while(fast != null ){
fast = fast.next;
slow = slow.next;
}
return slow ;
}
/**
* @param args
*/
public static void main(String[] args) {
ListNode head = new ListNode(1);
ListNode node1 = new ListNode(2);
ListNode node2 = new ListNode(3);
ListNode node3 = new ListNode(4);
head.next = node1;
node1.next = node2;
node2.next = node3;
node3.next = null;
ListNode ans = new FindKthToTailSolution().FindKthToTail(head, 2);
System.out.println(ans.val);
}
}
相关文章推荐
- 剑指Offer—14—链表中倒数第k个结点
- 【剑指offer】Q15:链表中的倒数第K个结点
- 剑指offer:输入一个链表,输出该链表中倒数第k个结点。
- [剑指offer]链表中倒数第k个结点
- 【剑指offer】九,链表中倒数第k个结点
- 剑指offer15 链表中倒数第k个结点
- 剑指offer代码解析——面试题15求链表中倒数第K个结点
- 剑指offer:(15)代码的鲁棒性:链表中倒数第k个结点
- 剑指offer--链表中倒数第k个结点
- 剑指offer题解 链表中倒数第k个结点
- 剑指Offer 15 输入一个链表,输出该链表中倒数第k个结点
- 剑指offer-链表中倒数第K个结点
- 剑指offer--链表中倒数第k个结点
- 剑指Offer------链表中倒数第k个结点
- 剑指Offer:链表中倒数第k个结点
- 剑指offer----链表中倒数第K个结点
- 剑指Offer学习之面试题15 :链表中倒数第k个结点
- [剑指offer]链表中倒数第k个结点
- 【剑指offer-Java版】15链表中倒数第K个结点
- [剑指offer-1517]链表中倒数第k个结点