每日一题——leetcode基础题之移除链表元素

简介: 每日一题——leetcode基础题之移除链表元素

本题来自于leetcode基础题之:移除链表元素

详情请点击移除链表元素

题目

这是不是看到题目的你?

让我们简单分析一下:

根据题目简单分析,我们可以定义两个变量,cur和prev两个变量,让prev变量在cur之后。

接下来代码实现一下:

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

看看结果

发现报错呢,为啥呢,我们画图分析一下:

让我们来优化下代码:

//1.头删
           //2.中间删除
           if(cur==head)
           {
               head=cur->next;
               free(cur);
               cur=head;
           }
           else
           {
           //删除
           prev->next=cur->next;
           free(cur);
           cur=prev->next;
           }

总代码:

struct ListNode* removeElements(struct ListNode* head, int val)
{
   struct ListNode*prev=NULL,*cur=head;
   while(cur)
   {
       if(cur->val==val)
       {
           //1.头删
           //2.中间删除
           if(cur==head)
           {
               head=cur->next;
               free(cur);
               cur=head;
           }
           else
           {
           //删除
           prev->next=cur->next;
           free(cur);
           cur=prev->next;
           }
       }
       else
       {
          //迭代往后走
          prev=cur;
          cur=cur->next;
       }
   }
   return head;
}

运行结果:

可以看到代码没有问题,说明成功解决掉了这个问题

今天的分享到这就结束了,有问题可以私信我哦!!

相关文章
|
3月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
42 1
|
3月前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
56 0
Leetcode第21题(合并两个有序链表)
|
3月前
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
43 0
|
3月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
31 0
LeetCode第二十四题(两两交换链表中的节点)
|
3月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
48 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
3月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
107 0
|
3月前
【LeetCode 10】142. 环形链表 II
【LeetCode 10】142. 环形链表 II
25 0
|
3月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
21 0
|
3月前
【LeetCode 08】206 反转链表
【LeetCode 08】206 反转链表
14 0
|
4月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行