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

哪个代运营公司比较好惠州seo排名收费

哪个代运营公司比较好,惠州seo排名收费,wordpress添加注册,商城服务是怎么赚钱【刷题之路】LeetCode 203. 移除链表元素 一、题目描述二、解题1、方法1——在原链表上动刀子1.1、思路分析1.2、代码实现 2、方法2——使用额外的链表2.1、思路分析2.2、代码实现 一、题目描述 原题连接: 203. 移除链表元素 题目描述: 给你一个链表的…

【刷题之路】LeetCode 203. 移除链表元素

  • 一、题目描述
  • 二、解题
    • 1、方法1——在原链表上动刀子
      • 1.1、思路分析
      • 1.2、代码实现
    • 2、方法2——使用额外的链表
      • 2.1、思路分析
      • 2.2、代码实现

一、题目描述

原题连接: 203. 移除链表元素

题目描述:
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例 1:

在这里插入图片描述
输入: head = [1,2,6,3,4,5,6], val = 6
输出: [1,2,3,4,5]

示例 2:

输入: head = [], val = 1
输出: []

示例 3:

输入: head = [7,7,7,7], val = 7
输出: []

提示:
列表中的节点数目在范围 [0, 104] 内
1 <= Node.val <= 50
0 <= val <= 50

二、解题

1、方法1——在原链表上动刀子

1.1、思路分析

首先我们应该能想到的就是使用一个cur指针来遍历链表,当cur-val == val时就删除cur:
在这里插入图片描述

但是这是单链表,也就意味着如果我们直接删除掉cur的话,就找不到cur后面的节点了,所以正确的做法应该是在删除之前先使用一个pre指针保存好cur的前一个节点,删除之前先让pre的next指向cur的next,然后再删除cur:
在这里插入图片描述
然后再使cur = pre->next即可。
不过有一个特殊情况就是当第一个节点的val刚好等于待删除的val时,例如:
在这里插入图片描述
这时候的cur就没有前驱节点pre了,所以这时候就应该直接执行头删。
而当我们要删除的节点刚好是链表的最后一个节点的时候,这种情况其实并不用特殊处理,因为当我们向上面一样执行完删除操作时,cur就已经为NULL了pre就已经是最后一个节点了:
在这里插入图片描述

1.2、代码实现

有了以上思路,那我们写起代码来也就水到渠成了:

struct ListNode* removeElements(struct ListNode* head, int val){if (NULL == head) {return NULL;}struct ListNode *cur = head;struct ListNode *pre = NULL; while (cur) {if (val == cur->val) {if (cur == head) { // 头删head = cur->next;free(cur);cur = head;} else {pre->next = cur->next;free(cur);cur = pre->next;}} else { // 迭代地往后走pre = cur;cur = cur->next;}}return head;  
}

时间复杂度;O(n),n为链表的长度。
空间复杂度:O(1),我们只需要用到常数级的额外空间。

2、方法2——使用额外的链表

2.1、思路分析

我们可以创建一个新的链表,用一个新的头指针newhead指向。使用一个cur指针来遍历原链表,当cur的val不等于待删除的val时候,就将cur尾插到新链表中,当cur的val等于待删除的val时就删除cur:
在这里插入图片描述
同样的,为了保证删除节点后还能找到下一个节点,我们需要提前使用一个next指针保存cur的下一个节点:
在这里插入图片描述
而且插入新链表执行的是尾插,为了不必每次都找尾,我们需要在使用一个指针tail来保存新节点的尾节点:

在这里插入图片描述
然后每次的尾插我们就只需要执行tail->next = cur,然后执行tail = tail->next即可。
还有一个特殊情况那就只剩头插了,因为是插入第一个节点,所以此时的tail就为NULL,所以不能直接使用tail,这时候应该直接执行头插,即newhead = cur,然后再让tail = cur即可:
在这里插入图片描述

2.2、代码实现

有了以上思路,那我们写起代码来也就水到渠成了:

struct ListNode* removeElements(struct ListNode* head, int val){if (NULL == head) {return NULL;}struct ListNode *cur = head;struct ListNode *newhead = NULL; // 新链表的头指针struct ListNode *Next = NULL; // 当cur->val == val时,保存cur的下一个节点,以辅助释放curstruct ListNode *tail = NULL; // 保存新链表的最后一个节点while (cur) {if (cur->val == val) {Next = cur->next;free(cur);cur = Next;} else {if (NULL == newhead) {newhead = cur;tail = cur;} else {tail->next = cur;tail = tail->next;}cur = cur->next;tail->next = NULL;}}return newhead;
}
http://www.hkea.cn/news/976479/

相关文章:

  • 制作小程序和网站的公司搜狗收录提交入口网址
  • 手机站电影基础建站如何提升和优化
  • 江苏 网站备案百度贴吧官网app下载
  • 网站制作三站湖南网站seo公司
  • 简单做任务赚钱网站企业管理培训课程报名
  • 零点研究咨询集团官方网站建设相似图片在线查找
  • 网站开发需要什么软件关键词app
  • 360全景网站建设做了5天游戏推广被抓了
  • 政府网站建设经验典型材料河源今日头条新闻最新
  • 为什么要进行网站备案佛山市人民政府门户网站
  • 摄影网站开发背景百度app交易平台
  • 吉林网站建设石家庄百度快照优化排名
  • 大学生网站开发总结报告app推广接单发布平台
  • 自己做的网站怎么推广seo顾问培训
  • 怎么做业务网站百度搜索提交入口
  • 网页设计网站图片西安百度推广运营公司
  • 济南网站开发推广网络服务包括
  • 五星级酒店网站建设关键词歌词表达的意思
  • 浙江高端建设网站网站关键词如何优化
  • 2017网站开发工程师五合一网站建设
  • 学编程的孩子有什么好处seo网站诊断文档案例
  • 广州中新知识城开发建设网站无锡百姓网推广
  • 宝鸡做网站费用关键词你们懂的
  • wordpress 仿站 教程百度竞价点击一次多少钱
  • 做h的游戏 迅雷下载网站百度推广管家
  • 营销型网站建设的目的外贸网站平台都有哪些 免费的
  • 广东做网站公司广州从化发布
  • 能发外链的网站国际新闻今天最新消息
  • 做软件的网站关键词优化快速排名
  • 网站建设与管理简介网站链接交易