面试题13.在O(1)时间删除链表节点
来源:互联网 发布:淘宝购物车图片及价格 编辑:程序博客网 时间:2024/05/19 19:39
题目描述:
给定单链表的头指针和一个结点指针,实现在O(1)的时间复杂度内,删除该结点。结点的定义为:
class Node { Node next; int val; Node(int val) { this.val = val; }}
思路:
假设当前的链表是:0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6,我们要删除4这个结点
通常的想法是,扫描整个链表,当遇到要删除的结点后,删除之。比如,我们扫描到3,发现下一个就是要删除的结点4,然后我们修改3的next指针,使之指向5,然后把4的next指针指向null,这样就把4从这个链表中删除了。很显然,这种方法的时间复杂度是O(n)。
为了得到时间复杂度为O(1)的方法,我们采用复制值的方法,把待删除节点的下一个结点的值,复制给待删除结点,然后删除下一个结点即可。具体说来:
- 把结点5的值复制给结点4,然后删除结点5,直接一步到位删除结点。
这个思路的代码如下:
/** * O(1)时间内删除链表的结点 * @author lijialin * */class Node { Node next; int val; Node(int val) { this.val = val; }}public class Main { public static void delete(Node head, Node node) { node.val = node.next.val; node.next = node.next.next; } public static void main(String[] args) { // test case int[] arr = new int[]{0,1,2,3,4,5,6}; Node[] list = new Node[arr.length]; for(int i = 0; i < arr.length; i++) { list[i] = new Node(i); } for(int i = 0; i < list.length-1; i++) { Node node = list[i]; Node next_node = list[i+1]; node.next = next_node; } Node head = list[0]; delete(head, list[4]); while(head != null) { System.out.print(head.val + " "); head = head.next; } System.out.println(); }}
注:学渣心里苦,不要学楼主,平时不努力,考试二百五,哭 ~
阅读全文
1 0
- 剑指offer-面试题13.在O(1)时间删除链表节点
- 面试题13.在O(1)时间删除链表节点
- 剑指offer 面试题12 在O(1)时间删除链表节点
- 剑指Offer :面试题13 在O(1)时间删除链表节点
- 面试题13:在O(1)时间删除链表节点
- 剑指offer 面试题13—在O(1)时间删除链表节点
- 【面试题】在O(1)时间复杂度删除链表节点
- 剑指Offer面试题13(java版):在O(1)时间删除链表节点
- 剑指offer面试题13-在O(1)时间删除链表的节点
- 面试题13:在O(1)时间删除链表节点
- 剑指offer之面试题13:在O(1)时间删除链表节点
- 面试题13:在O(1)时间 内删除链表节点
- 剑指offer--面试题13:在O(1)时间删除链表节点
- 剑指Offer面试题13(java版):在O(1)时间删除链表节点
- 剑指offer-面试题13-在O(1)时间删除链表节点
- 面试题 13: 在O(1)时间删除链表节点
- 剑指offer面试题13 在O(1)时间删除链表节点
- 基于visual Studio2013解决面试题之0604O(1)时间复杂度删除链表节点
- TensorFlow基本概念
- andorid状态机StateMachine
- BufferReader类举一反三
- 岭回归中GCV,HKB,L-W的解释
- Android开发中一些被冷落但却很有用的类和方法
- 面试题13.在O(1)时间删除链表节点
- leetcode 68. Text Justification 文本对齐
- 基于卷积的密度统计(一)密度图的生成
- [Azure]ARM中使用Azure Powershell批量规划虚拟网络
- 重学java——第一课
- wordpress主题制作学习记录
- 消息中间件核心实体(1)
- Spring核心框架
- 跨境茶话会8月期丨性能优化的艺术