链表中倒数第k个结点
来源:互联网 发布:体育视频直播软件 编辑:程序博客网 时间:2024/06/07 05:42
输入一个链表,输出该链表中倒数第k个结点。
分析:
设置两个指针,一个快指针、一个慢指针,快指针和慢指针开始时都指向链表第一个节点,然后让快指针向后走k-1个节点,再让满指针和快指针同时向后走,当快指针指向的下一个节点为空时,慢指针所指向的节点即为所求。
本文是考虑的单链表。
代码如下:
//单链表进行考虑
public class ListNode {
int val; //自身值
ListNode next = null; //指向下一个节点
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode FindKthToTail(ListNode head, int k) {
if(head == null || k <= 0){
return null;
}
ListNode quick = head;
ListNode slow = head;
//先让快指针向后走k个节点
for(int i = k;i > 1;i--){
if(quick.next != null){
quick = quick.next;
}else{
return null;
}
}
//快指针和慢指针同时走
while(quick.next != null){
slow = slow.next;
quick = quick.next;
}
return slow;
}
public static void main(String[] args) {
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = null;
Solution s = new Solution();
ListNode result = s.FindKthToTail(node1, 3);
System.out.println(result.val);
}
}
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第 k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 输出链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 链表中倒数第k个结点
- 链表中倒数第k个结点
- 查找链表中倒数第k 个结点
- 链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 链表中倒数第k个结点
- 链表中倒数第k个结点[数据结构]
- 链表中倒数第k个结点
- Linux BT下载(10)-出错处理模块和运行日志模块设计
- JavaEE网上商城项目(涉及Structs2+Spring+Hibernate+jQuery)
- 16.11.28
- 设计模式学习笔记--享元模式
- [产品经理]产品经理和项目经理的职责
- 链表中倒数第k个结点
- window.returnValue使用方法
- Linux ARM C语言中调用汇编函数
- Java基础知识
- 关于butterknife代码混淆的一个小坑
- angular之依赖注入
- 编程语言中的数据结构
- API 25 (Android 7.1.1 API) widget.LinearLayout——属性分析
- 避免APK被抓包