我是靠谱客的博主 高高小海豚,最近开发中收集的这篇文章主要介绍【第七天】 LeetCode刷题笔记分享 | 容易篇 | 面试题02.03 删除中间结点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

      • 一、题目信息
        • 1.1 题目描述
        • 1.2 示例
      • 二、题解
        • 2.1 解法1
        • 2.2 解法1的优化

一、题目信息

1.1 题目描述

实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。

1.2 示例

输入:单向链表a->b->c->d->e->f中的节点c
结果:不返回任何数据,但该链表变为a->b->d->e->f

二、题解

2.1 解法1

class Solution {
public:
    void deleteNode(ListNode* node) {

    //函数的返回值为空,传入的参数为一个单链表的结点
    //因为所给的结点不是头结点,将下一个结点的值给node,并将node指针,指向下下一个结点
    node->val = node->next->val;
    node->next = node->next->next;
        
    }
};


结果分析:运行时间12ms,内存消耗7.9MB

2.2 解法1的优化

析:解法1,直接忽略了node的下一个结点,没有把的delete掉,存在内存泄漏的问题

优化后的代码:

class Solution {
public:
    void deleteNode(ListNode* node) {

     //将next结点的值赋值给当前结点
    node->val = node->next->val;

    //改变node结点next指针指向,并释放掉next节点内存空间
    ListNode* tmp = node->next;
    node->next = node->next->next;

    delete tmp;
    }
};

运行结果分析:执行时间16ms,内存消耗7.9MB


更多有关于Linux C++后台开发的学习分享,感兴趣的朋友们可以关注我的个人公众号
在这里插入图片描述

最后

以上就是高高小海豚为你收集整理的【第七天】 LeetCode刷题笔记分享 | 容易篇 | 面试题02.03 删除中间结点的全部内容,希望文章能够帮你解决【第七天】 LeetCode刷题笔记分享 | 容易篇 | 面试题02.03 删除中间结点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部