首页 > 编程语言 >代码随想录算法训练营第三天| 203.移除链表元素 、 707.设计链表 、206.反转链表

代码随想录算法训练营第三天| 203.移除链表元素 、 707.设计链表 、206.反转链表

时间:2023-06-09 23:22:49浏览次数:42  
标签:head ListNode cur val 随想录 next 链表 移除

链表的构造:

link.h:

 1 #ifndef LINK_H
 2 #define LINK_H
 3 #include<vector>
 4 
 5 struct ListNode {
 6     int val;
 7     ListNode* next;
 8     ListNode() :val(0), next(nullptr) {}
 9     ListNode(int x) : val(x), next(nullptr) {}
10     ListNode(int x, ListNode* next) : val(x), next(next) {}
11 };
12 
13 class Solution {
14 public:
15     ListNode* removeElements(ListNode* head, int val);
16 
17 };
18 #endif
Link.h

实现链表:

1 #include<iostream>
2 #include"Link.h"
3 using namespace std;
4 
5 ListNode* Solution::removeElements(ListNode* head, int val)
6 {}
Complement

实现移除元素:

难点:

  1,因为给的head是不是空节点的head,一定要注意这一点

  2,需要自己定义一个空的头节点

  3,需要设置一个游标

  4,返回的时候,返回空节点的时候->用num

 1 ListNode* Solution::removeElements(ListNode* head, int val)
 2 {
 3     ListNode* DyHead = new ListNode();
 4     //注意 cur_ == head 
 5     DyHead->next = head;
 6     auto cur_ = DyHead;
 7 
 8     while (cur_->next != nullptr)
 9     {
10         if (cur_->next->val == val)
11         {
12             ListNode* mid = cur_->next;
13             cur_->next = mid->next;
14         }
15         // 不是的话,就下一个
16         else 
17         {
18             cur_ = cur_->next;
19         }
20     
21     }
22 
23     //不是原数组的head 而是 dyhead->next
24     return DyHead->next;
25 }

 

标签:head,ListNode,cur,val,随想录,next,链表,移除
From: https://www.cnblogs.com/smartisn/p/17470490.html

相关文章

  • 代码随想录day03
     第二章 链表part01链表理论基础,203.移除链表元素,707.设计链表,206.反转链表 203.移除链表元素虚拟头结点/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(int......
  • MDT部署Windows系列 (十二): 进阶篇—制作完美的Win10 22H2系统镜像模板之移除Windows
    前言由于工作等原因(借口),距离发布上一篇MDT系列的文章已经过去一年::twemoji:sweat::上一章我记录了基于MDT如何使用一个Task即可实现制作Windows基础wim镜像+DIY基础软件+捕捉镜像。传送门有好多同学一直咨询在制作捕捉镜像的时候遇到的常见的2个问题:如何彻底的移除掉Windows10中......
  • 代码随想录算法训练营第十七天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404
    110.平衡二叉树力扣题目链接(opensnewwindow)给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例1:给定二叉树[3,9,20,null,null,15,7]返回true。示例2:给定二叉树[1,2,2,3,3,nu......
  • Qt安装完后想要添加组件怎么办但是添加或移除组件为灰色不可用是怎么回事?
    总共有三个选项第一个就是添加或移除组件不可用,自动选择第二个,这里其实就是版本需要升级,升级完后重启再次选择添加或移除组件就可以了。补个阿里云的qt源:https://mirrors.aliyun.com/qt/......
  • 代码随想录day02
    第一章 数组part02977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 977.有序数组的平方双指针法,平方数组为两边大中间小。 209.长度最小的子数组第一想法暴力两个for循环。学习双指针的滑动窗口法。 59.螺旋矩阵II坚持循环不变量原则,左闭右开。这道......
  • 链表-移除链表元素
    点击查看代码varremoveElements=function(head,val){vardummyNode=newListNode(-1);//设置一个虚拟头节点dummyNode.next=head;varprev=dummyNode;//prev记录当前节点的前一个节点while(prev.next){//从head开始遍历链表if(......
  • 链表和双指针框架
    链表和双指针框架前后指针:方便链表删除快慢指针:获取链表倒数第N个元素快慢指针+前后指针:组合问题快慢指针:相交、判环、起点、长度双索引指针:合并/分割/拼接链表链表处理细节细节1:创建额外的哨兵节点的时机细节2:链表递归顺序细节3:虚拟节点细节4:递归实现双向遍历 前后指针:方便链......
  • 代码随想录算法训练营第十五天|● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉
    102.二叉树的层序遍历力扣题目链接(opensnewwindow)给你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地,从左到右访问所有节点)。思路:迭代法,非递归思路,借用队列,先进先出来达到层序遍历的效果。但写的过程中,我不知道该如何让同一层的数据都保存在一个数组里。看了题解发......
  • 代码随想录算法训练营第十四天|理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代
    理论基础满二叉树概念完全二叉树概念二叉搜索树概念平衡二叉搜索树概念二叉树存储方式:链式存储和顺序存储二叉树遍历方式:前中后序遍历,层次遍历。二叉树的代码定义publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.v......
  • 打卡第一天| 704. 二分查找 27. 移除元素
    第N遍做这个题 这题也写过很多次了还是有点费劲。需要回忆。用时14min。 ......