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

温州logo设计公司手机端网站优化

温州logo设计公司,手机端网站优化,学校校园网站建设方案,网站建设服务8Leetcode203 移除链表元素 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出&#xf…

Leetcode203

移除链表元素

题目描述:

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

示例 1:

img

输入: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
输出:[]

原链表操作

如果我们选择在原链表上进行操作的话,我们需要考虑两个方面的问题:

  1. 头节点为我们要移除的元素
  2. 非头结点为我们要移除的元素

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Java版本

class Solution {public ListNode removeElements(ListNode head, int val) {//处理头节点while(head != null && head.val == val){head = head.next;} //处理头节点为空的情况if(head == null){return head;}//确保head.val != val 的情况ListNode pre = head;ListNode cur = head.next;while(cur != null){if(cur.val == val){pre.next = cur.next;}else{pre = cur;}cur = cur.next;}return head;}
}
class Solution {public ListNode removeElements(ListNode head, int val) {while(head != null && head.val == val){head = head.next;}ListNode cur = head;while(cur != null){while(cur.next != null && cur.next.val == val){cur.next = cur.next.next;}cur = cur.next;}return head;}
}

C++版本

class Solution {
public:ListNode* removeElements(ListNode* head, int val) {//删除头节点while(head != NULL && head->val == val){ListNode* tmp = head;head = head->next;delete tmp;}//删除非头结点ListNode* cur = head;while(cur != NULL && cur->next != NULL){if(cur->next->val == val){ListNode* tmp = cur->next;cur->next = cur->next->next;delete tmp;}else{cur = cur->next;}}return head;}
};

虚拟头节点

介绍

虚拟头节点是一种在链表中使用的特殊节点,它通常作为头节点的前一个节点,但是不存储具体的数据。它的目的是为了简化链表的操作,特别是在处理边界条件和插入、删除操作时提供便利。

在传统的链表实现中,如果要对链表进行插入或者删除操作,我们需要分别处理头节点的情况和中间节点的情况。这样就需要额外的代码来处理这些边界情况,增加了代码的复杂度。

而使用虚拟头节点,我们可以将这些特殊情况都统一为对中间节点的操作。具体来说,虚拟头节点就像是链表中的一个普通节点,但是它不存储具体的数据。当链表为空时,虚拟头节点就是唯一的节点,它的下一个节点就是链表的真正的头节点。当链表非空时,虚拟头节点的下一个节点就是链表的真正的头节点。

插入操作时,我们只需要将新节点插入到虚拟头节点的后面即可,而不需要单独处理头节点为空的情况。删除操作时,我们只需要将虚拟头节点的后继节点指向要删除的节点的后继节点即可,而不需要单独处理删除头节点的情况。

使用虚拟头节点的好处是简化了链表的操作逻辑和代码,让代码更加简洁和可读。同时,它也保证了链表的头节点和其他节点的统一性,避免了对头节点的特殊处理。

总结起来,虚拟头节点是一个不存储具体数据的特殊节点,它位于真正的头节点之前,用于简化链表的操作和处理边界情况。它统一了对头节点和其他节点的操作,使得代码更加简洁和可维护

所以当我们在原链表操作时,我们需要针对每一种情况去编写逻辑,但使用虚拟头结点的话,就可以统一移除节点这一操作~

Java版本

class Solution {public ListNode removeElements(ListNode head, int val) {ListNode dummyHead = new ListNode(-1);dummyHead.next = head;ListNode pre = dummyHead;while(pre.next != null){if(pre.next.val == val){pre.next = pre.next.next;}else{pre = pre.next;}}return dummyHead.next;}
}
http://www.hkea.cn/news/805345/

相关文章:

  • 爬取漫画数据做网站今日热搜新闻头条
  • 雄安网站建设制作网站关键词如何快速上首页
  • 佛山从事网站建设百度小程序入口官网
  • 自建网站平台可以实现哪些功能网络营销这个专业怎么样
  • 佛山新网站制作公司网页制作成品模板网站
  • 校园网站建设的意见企业管理培训课程网课
  • 郑大远程教育动态网站建设seo优化关键词排名
  • 做logo什么网站昆明百度关键词优化
  • 怎样做省钱购物网站sem推广代运营
  • 英文网站开发公司万网阿里云域名查询
  • 做调查问卷网挣钱的网站新闻 今天
  • 网站建设工作小组在线建站平台免费建网站
  • 可以发广告的网站湖南seo推广系统
  • 大丰网站建设哪家好成都seo
  • 学校网站建设项目的wbsseo交流qq群
  • 筑梦网站建设西安百度竞价开户
  • 个体营业执照可以做网站搞推广吗推广网站制作
  • 公共交通公司网站建设方案移动慧生活app下载
  • 国内开源代码网站搜了网推广效果怎么样
  • html5 metro风格网站模板今日新闻事件
  • 网站不在首页显示出来做网络推广
  • 上海网站seo公司网页推广平台
  • 网站服务器租用价格表百度怎么发布自己的广告
  • 经纪人做网站技巧搜索引擎入口yandex
  • 教育网站制作哪家服务好全球外贸采购网
  • 响应式网络网站源码百度关键词查询网站
  • 南京网站制作设计公司网络运营团队
  • 阿里巴巴上怎样做自己的网站seo网站优化网站编辑招聘
  • 网站做付费推广都需要问什么网络热词2022
  • 给男票做网站表白的软件产品市场推广计划书