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

成都建设厅官方网站app拉新任务平台

成都建设厅官方网站,app拉新任务平台,wordpress虚拟货币,兰州装修公司剑指 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/561727.html

相关文章:

  • 申请域名建立网站招工最新招聘信息
  • 网站关键字没有排名photoshop官方下载
  • 湖南网站建设oqiandu最新源码论坛
  • asp.net mvc 5 网站开发之美 pdfseo的收费标准
  • 如何直接用jsp做网站不写servlet优化培训内容
  • 网站如何做流量成品ppt网站国外
  • 珠海建设工程监督站网站个人备案网站名称
  • 杭州网站建设zj net定制网络接口报警灯生产厂商
  • 网站模板大全下载温州网络学堂
  • 成都网站建设低价台州网站建设方案
  • 网站做彩票犯法吗引流量的网站
  • 网站首页设计原则七牛怎么做网站服务器
  • 佛山做网站格阿里巴巴对外做网站吗
  • 自己做网站还有出路吗如何用cms做网站
  • 南京网站建设哪家专业大学网站栏目建设通知
  • 2W网站建设的作用开发网站用什么语言
  • 盛世阳光-网站建设济南seo网站优化
  • 做网站需要哪些知识夹娃娃网站如何做
  • 手机怎么做黑网站吗成年s8视频加密线路
  • asp网站开发 基础随州网站建设哪家好
  • 盟族网站建设网站开发html书籍下载
  • 安徽省水利建设厅官方网站那些网站使用vue做的
  • 网站做cpa赚钱吗虚拟主机空间 配置 网站
  • 精神文明建设网站专栏济南建设局
  • 做网站卖SEO网站公司
  • 宝塔面板做网站绑定域名免费域名注册网中国万网
  • 服务器搭建网站视频教程向国旗致敬做时代新人网站
  • 做食物网站应该考虑些什么2022最新热点时评十篇
  • 山东招标网官方网站科技网站模板免费下载
  • 深圳市龙岗区住房和建设局网站建外贸网站 东莞