前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode Delete Node in a Linked ListQuestion题目分析代码

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

作者头像
desperate633
发布2018-08-22 09:51:32
2880
发布2018-08-22 09:51:32
举报
文章被收录于专栏:desperate633desperate633

Question

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node. Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.

题目

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

样例 给定1->2->3->4,和节点3,删除 3 之后,链表应该变为1->2->4。

分析

一般,删除链表节点需要前置节点,需要n的时间复杂度。但这里要实现1的复杂度。 看似很难,无法解决。其实很简单,我们转换思路,我们可以删除当前的节点的下一个节点,那么我们就删除下一个节点,不过,在删除之前,把下一个节点的值保存到当前节点就可以了,这样不久相当于删除了当前节点么?当然当头尾节点这样就行不通了。

代码

代码语言:javascript
复制
/**
 * 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
        node.val = node.next.val;
        node.next = node.next.next;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Question
  • 题目
  • 分析
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档