当前位置: 首页 > wzjs >正文

苏州市住房和城乡建设局网站口碑好的设计培训机构

苏州市住房和城乡建设局网站,口碑好的设计培训机构,烟台网站建设公司报价,如何登录建设部网站电脑版剑指 Offer(第2版)面试题 18:删除链表的节点 剑指 Offer(第2版)面试题 18:删除链表的节点题目一:在 O(1) 时间删除链表结点题目二:删除链表中重复的节点 剑指 Offer(第2版…

剑指 Offer(第2版)面试题 18:删除链表的节点

  • 剑指 Offer(第2版)面试题 18:删除链表的节点
    • 题目一:在 O(1) 时间删除链表结点
    • 题目二:删除链表中重复的节点

剑指 Offer(第2版)面试题 18:删除链表的节点

题目一:在 O(1) 时间删除链表结点

题目来源:

  1. 28. 在 O(1) 时间删除链表结点
  2. LeetCode 237. 删除链表中的节点

算法:

  1. 得到要删除节点的下一个节点 pNext;
  2. 将 pNext->val 赋给 node->val;
  3. 让 node 指向 pNext->next;
  4. delete pNext。

代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution
{
public:void deleteNode(ListNode *node){ListNode *pNext = node->next;node->val = pNext->val;node->next = pNext->next;delete pNext;}
};

复杂度分析:

时间复杂度:O(1)。

空间复杂度:O(1)。

题目二:删除链表中重复的节点

题目来源:29. 删除链表中重复的节点

代码 1:书上的版本,很长,但是没有内存泄漏

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution
{
public:ListNode *deleteDuplication(ListNode *head){if (head == nullptr)return nullptr;ListNode *p = head, *pre = nullptr;while (p){ListNode *pNext = p->next;bool needDelete = false;if (pNext && p->val == pNext->val)needDelete = true;if (needDelete){int value = p->val;ListNode *pToBeDel = p;while (pToBeDel && pToBeDel->val == value){pNext = pToBeDel->next;delete pToBeDel;pToBeDel = pNext;}if (pre == nullptr)head = pNext;elsepre->next = pNext;p = pNext;}else{pre = p;p = p->next;}}return head;}
};

代码 2:简化版,没有 delete 重复节点,存在内存泄漏

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution
{
public:ListNode *deleteDuplication(ListNode *head){auto dummy = new ListNode(-1); // 建立虚拟头结点dummy->next = head;			   // 虚拟头结点指向头结点auto p = dummy;while (p->next) // p的下一个节点不为空{auto q = p->next;// q的下一个节点不为空,且q的下一个节点的值等于p的下一个节点的值while (q->next && q->next->val == p->next->val)q = q->next;// 如果q==p的下一个节点 p=qif (q == p->next)p = q;// 如果不是说明存在重复元素,则p指向q的下一个节点即非重复节点elsep->next = q->next;}return dummy->next;}
};

复杂度分析:

时间复杂度:O(n),其中 n 是链表的长度。

空间复杂度:O(1)。

http://www.dtcms.com/wzjs/379067.html

相关文章:

  • 泗县做网站三亚网络推广
  • 做地产的设计网站下载班级优化大师并安装
  • 没有专项备案的网站seo优化轻松seo优化排名
  • 南阳网站排名公司企业网站建设
  • 淘宝网站珠海网站建设
  • 西安企业网站制作百度推广培训班
  • 工具磨床东莞网站建设营销策划方案怎么写?
  • 长江委建设与管理局网站查权重的软件
  • 温州网站定制公司哪家好西地那非片能延时多久每次吃多少
  • 郑州市公司网站开发设计推广营销企业
  • 特色专业建设展示网站 湖北网络营销的12种手段
  • 行业公司网站建设网站如何进行seo
  • 大连模板网站制作多少钱营销型网站建设策划书
  • 哪个网站可以自己做行程如何用手机免费创建网站
  • 做牙的网站叫什么友情链接可以帮助店铺提高浏览量
  • 北京手机网站开发公司长沙seo排名收费
  • 外贸型网站建设windows优化大师最新版本
  • 大连做网站哪家便宜一网信息一个简单便捷的新闻网站
  • 互联网站从事登载新闻业务管理暂行规定数据分析培训课程
  • 前端做网站难吗南宁seo网站排名优化公司
  • 网站建设与网页制作模拟试题北京最新疫情情况
  • 济南网站建设公司中国宣布取消新冠免费治疗
  • 怎么做网站的三级目录关键词seo排名公司
  • 杭州萧山网站建设公司百度seo指南
  • 中国贸易网怎么样seo如何优化排名
  • 9i网站建设软文营销的技巧有哪些?
  • 设计感强的网站网络推广网站程序
  • 如何借用别人静态网站做模板凡科网怎么建网站
  • 游戏网站做关键字百度一下 你就知道官方
  • react node.js网站开发查排名的软件有哪些