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

广州比较好的网站建设公司seo查询网站

广州比较好的网站建设公司,seo查询网站,广告费内包括网站建设,win系统做网站剑指 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/187192.html

相关文章:

  • 政府网站建设自助建站平台精准引流怎么推广
  • 酒店网站建设案例策划书怎么写万网域名查询接口
  • 怎么选择网站开发群排名优化软件官网
  • 网站建站业务门户网站有哪些
  • 国际新闻最新消息十条摘抄2022关键词seo培训
  • 做盗链电影网站怎么样百度一下 你知道首页
  • 给你一个网站你怎么做的吗百度统计工具
  • 建设购物网站流程图网络营销策划推广方案
  • WordPress数据库搬迁重庆网站seo费用
  • 专业做全景图的网站平台微信公众号运营
  • wordpress调用目录下seo关键词优化软件app
  • 北京做网站哪个公司好竞价推广运营
  • 中国珠宝设计师网郑州网站seo服务
  • 上海专上海专业网站制作公司免费的网络推广平台
  • 网站建设方案模板高校指数函数运算法则
  • 网站的优势是什么意思高端网站定制开发
  • 做视频网站把视频放在哪里上海网站设计
  • 阿里云网站实名认证好看的友情链接代码
  • 上海传媒公司有哪些qq群排名优化软件购买
  • 做网站 数据库郑州seo优化服务
  • 怎么做免费个人网站万网的app叫什么
  • 征集二级网站建设意见 通知成都seo招聘信息
  • 大连网站优化步骤成都网站设计公司
  • 佛山网站建设网站制作公司哪家好seo课程简介
  • 推广网站挣钱裤子seo标题优化关键词
  • 江夏网站建设武汉百度开户电话
  • dreamweaver怎么做网页兰州seo优化公司
  • 上海建设工程协会网站seo优化6个实用技巧
  • 电影网站源码程序网站友链交换平台
  • 智能网站设计哪家好一份完整的电商运营方案