在O(1)时间复杂度删除链表节点

题意

给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在 O(1) 时间复杂度删除该链表节点。

样例

Linked list is 1->2->3->4, and given node 3, delete the node in place 1->2->4

思路

删除一个节点,只需要将该节点的下一个节点的值赋值给该该节点,并且让该节点的下一个指向它下一个的下一个即可。

代码实现

/**
 * Definition for ListNode.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int val) {
 *         this.val = val;
 *         this.next = null;
 *     }
 * }
 */ 
public class Solution {
    /**
     * @param node: the node in the list should be deleted
     * @return: nothing
     */
    public void deleteNode(ListNode node) {// write your code here
        if (node == null || node.next == null)
            return;
        ListNode next = node.next;
        node.val = next.val;
        node.next = next.next;
    }
}

原题地址

LintCode:在O(1)时间复杂度删除链表节点

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏屈定‘s Blog

Java8 Lambda(三)-强大的collect操作

collect应该说是Stream中最强大的终端操作了,使用其几乎能得到你想要的任意数据的聚合,下面好好分析该工具的用法.

9802
来自专栏性能与架构

如何方便的搜索JS复杂数组?

例如下面这个稍微复杂一点的数组 [ { IceCream: ['mint', 'chocolate'], Fruit: 'banana' }, { I...

3615
来自专栏java一日一条

关于Java集合的小抄

在尽可能短的篇幅里,将所有集合与并发集合的特征,实现方式,性能捋一遍。适合所有”精通Java”其实还不那么自信的人阅读。

651
来自专栏架构说

题目:将链表的奇数位和偶数位调换组成新的链表

题目:将链表的奇数位和偶数位调换组成新的链表 原题链接: http://oj.leetcode.com/problems/swap-nodes-in-pairs...

5279
来自专栏Spark学习技巧

JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介

1453
来自专栏Android知识点总结

00--图解数据结构之开篇+集合基类

1268
来自专栏desperate633

LeetCode Delete Node in a Linked ListQuestion题目分析代码

给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。

813
来自专栏从流域到海域

《笨办法学Python》 第39课手记

《笨办法学Python》 第39课手记 本节课讲列表的操作,用来做练习的代码中出现了之前用到过的几个函数,是一节复习课。你需要记住它们。 原代码如下: ten_...

1987
来自专栏码匠的流水账

聊聊storm的AggregateProcessor的execute及finishBatch方法

本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法

1195
来自专栏ml

Guava------------Cache使用方法

    简单从这几个方面描述一下如何使用Cache,对Cache的各种原理介绍此处不涉及.     1.使用场景     2.如何使用Cache     3.创...

7058

扫码关注云+社区

领取腾讯云代金券