[链表]-在单链表和双链表中删除倒数第K个节点
来源:互联网 发布:python 金融数据分析 编辑:程序博客网 时间:2024/06/05 20:32
【题目】
分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点。
【要求】
如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。
【解答】
单链表:
public class Node{public int value;public Node next;public Node(int data){this.value = data;}}public Node removeLastKthNode(Node head,int lastKth){if(head == null || lastKth < 1){return head}Node cur = head;while(cur!=null){lastKth--;cur = cur.next;}if (lastKth == 0){head = head.next;}if(lastKth < 0){cur = head;while(++lastKth != 0){cur = cur.next;}cur.next = cur.next.next;}return head;}对于双链表的调整,几乎与单链表的处理方式一样,注意last指针的重连即可。
public class DoubleNode{public int value;public DoubleNode last;public DoubleNode next;public DoubleNode(int data){this.value = data;}}public DoubleNode removeLastKthNode(DoubleNode head,int lastKth){if(head == null || lastKth < 1){return head;}DoubleNode cur = head;while(cur != null){lastKth --;cur = cur.next;}if(lastKth == 0){head = head.next;head.last = null;}if(lastKth < 0){cur = head;while(++lastKth != 0){cur = cur.next;}DoubleNode newNext = cur.next.next;cur.next = newNext;if(newNext != null){newNext.last = cur;}}return head;}
阅读全文
0 0
- 在单链表和双链表中删除倒数第k个节点
- [链表]-在单链表和双链表中删除倒数第K个节点
- 数据结构 在单链表和双链表中删除倒数第K个节点
- 链表问题(1)-- 在单链表和双链表中删除倒数第K个节点
- 链表问题——在单链表和双链表中删除倒数第K个节点
- 链表问题---在单链表和双链表中删除倒数第K个节点
- 链表问题 在单链表和双链表中删除倒数第K个节点
- 在单链表和双链表中删除倒数第K个节
- 删除单链表倒数第K个节点
- 单链表删除倒数第k个节点
- 在单链表中删除倒数第K个节点 Python 版
- 删除链表中倒数第k个节点
- 删除链表中倒数第K个节点,
- 删除倒数第k个节点
- 链表之删除单链表倒数第K个节点
- 删除单链表的倒数第K个节点
- 左程云_算法与数据结构 — 链表问题 — 02在单链表和双链表中删除倒数第K个节点
- 删除单链表和双向链表倒数第k个节点
- 2017秋招提前批美团面经
- 《Java NIO (中文版)》【PDF】下载
- Java ArrayList源码分析
- ECDSA数字签名算法
- SpringMVC报错: Failed to read candidate component class
- [链表]-在单链表和双链表中删除倒数第K个节点
- Set Matrix Zeroes
- 固定波束形成技术
- C++程序员发展方向
- hdfs名字空间配额管理指南
- 水仙花数
- windows 命令行 jps查看java进程没有反应,如何用jps查看java进程
- Spring Cloud Stream中文翻译
- A多线程与并发学习总结