首页 > 其他分享 >代码随想录:移除链表元素

代码随想录:移除链表元素

时间:2024-11-18 23:19:30浏览次数:1  
标签:head ListNode target val 随想录 next 链表 移除

代码随想录:移除链表元素

简单的链表操作,注意C++中在访问一个实体结构体时,用.来进行元素访问

ListNode head;
head.val = 10;
head.next = nullptr;

在访问一个指针变量时,用→来进行元素访问,如在本题中,题目给的head是一个指针,所以所有的变量访问都用→

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        // 头节点
        while (head != NULL && head->val == val) {
            head = head->next;
        }

        ListNode* target = head;
        ListNode* last = head;

        while (head != NULL && target->next != NULL) {
            if (target->next->val == val) {
                target->next = target->next->next;
            } else {
                target = target->next;
            }
        }
        return head;
    }
};

标签:head,ListNode,target,val,随想录,next,链表,移除
From: https://www.cnblogs.com/huigugu/p/18553982

相关文章

  • 代码随想录:设计链表
    代码随想录:设计链表这题遇到的问题是,在private中声明后,在构造函数中初始化的时候又声明了一次,大类的构造函数和结构体的构造函数弄晕掉了。另外虚头节点是真好用,以后记得用。一开始写成了这样:classMyLinkedList{public:structLinkNode{intvalue;......
  • 代码随想录算法训练营第七天(LeetCode454.四数相加Ⅱ;LeetCode383.赎金信;LeetCode15.三
    LeetCode454.四数相加Ⅱ题目链接:四数相加Ⅱ题目链接思路这道题目给定我们四个数组,让我们判断从四个数组中分别取一个元素,然后将这四个元素相加,值为0的元组个数,所以我们可以模仿两数之和,因为四个数组中分别取元素就是任意取,不需要考虑去重的问题,所以可以将四个数组转......
  • 代码随想录算法训练营第八天(LeetCode344.反转字符串;LeetCode541.反转字符串Ⅱ;卡码网54
    LeetCode344.反转字符串题目链接:反转字符串题目链接思路这道题目让我们进行字符串的反转,其实直接使用reverse相关的函数就可以解决问题。但是解决问题的时候,如果这道题目使用库函数就可以直接解决,就最好不要使用库函数;如果库函数只是题目中解法的一小步,那么就使用......
  • 代码随想录算法训练营第六天|哈希表|LC242. 有效的字母异位词|LC349. 两个数组的交集|
    哈希表    哈希表:用来快速判断一个元素是否出现在集合里;O(1);    哈希碰撞:比如小王和小李都映射到索引下表1的位置,有2中解决办法(拉链法和线性探测法);    拉链发:通过索引找到,其实拉链发就是要选择适当的哈希表的大小,这样既不会因为数组空值而浪费大量内......
  • 代码随想录算法训练营第四天|LC24.两两交换链表中的节点|LC19. 删除链表的倒数第 N 个
    24.两两交换链表中的节点-力扣(LeetCode)    1、需要一个虚拟节点进行帮助;    2、注意虚拟节点的连接以及变化(尝试有点困惑它的变化,后面有点理解);    3、注意后续第二组的交换时如何与第一组交换进行连接;fromtypingimportOptionalclassLis......
  • 代码随想录算法训练营第三十二天| 509. 斐波那契数 、70. 爬楼梯、746. 使用最小花费
    理论基础总结一下就是:动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。动态规划五部曲确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组509.斐波那契数1.......
  • 代码随想录算法训练营第三十三天| 62.不同路径 、63. 不同路径 II、343. 整数拆分 。c
    62.不同路径思路:按照dp五步法分析,成功AC。代码随想录classSolution{publicintuniquePaths(intm,intn){int[][]dp=newint[m+1][n+1];dp[0][1]=1;for(inti=1;i<=m;i++){for(intj=1;j<=n;j++){......
  • 《 C++ 修炼全景指南:二十 》不止是链表升级!跳表的核心原理与超强性能解析
    摘要这篇博客全面解析了跳表(SkipList)作为一种高效的链表数据结构的特性和应用。跳表以多层链表和随机化策略实现O(logn)的查找、插入和删除性能,简化了平衡树结构中常见的复杂旋转操作。通过剖析跳表的结构设计和核心操作,我们探讨了其在范围查询和动态更新中的优势,......
  • Leetcode141-环形链表
    思路链表判环方法:快慢指针法其实没那么高级,很简单的理解就是,采用两个指针,一个每次走两步,一个每次走一步,如果链表有环,那么每次走两步的指针,也就是走得快的指针一定会追上走得慢指针。代码第一种写法://写法1publicclassSolution{publicbooleanhasCycle(ListN......
  • 代码随想录:螺旋矩阵 II
    代码随想录:螺旋矩阵II题目是不难的,本质是重复多次顺时针旋转,注意边界条件。我第一次写错是二维数组的运用出了问题,vec[i][j]中,i代表行,j代表列,我的脑袋是明白的,但是在运用时,一开始二维矩阵向右遍历时,其实变的是j而非i另外注意一下二维vector的建立就行//二维vector数组本质上......