Leetcode-移除链表元素
C 设置哨兵节点,常规解法
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*///prev->next= curr->next
/*
设置一个哨兵节点,作为第一个节点的前驱节点,然后循环判断即可,不过最后要记得释放哨兵节点,否则会
超出时间限制的
*/
struct ListNode* removeElements(struct ListNode* head, int val){if(!head){return NULL;}//设置一个节点,是第一个节点的前驱节点struct ListNode *first = malloc(sizeof(struct ListNode));first->next = head;struct ListNode *prev=first,*curr=head;while(curr!=NULL){if(curr->val == val){prev->next = curr->next;}else{prev = curr;}curr = curr->next;}head = first->next;free(first);//释放内存,要不然会超出时间限制return head;
递归方法
链表 一般都是具有天然的递归性
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*//*
递归 来判断 链表
*/
struct ListNode* removeElements(struct ListNode* head, int val){if(!head){return NULL;}//直到到达链表尾部才开始删除重复元素head->next = removeElements(head->next,val);return head->val == val?head->next:head;
}
C++ 迭代方法
直接循环判断,最后再来判断head节点是否等于val值
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {if(!head){return NULL;}struct ListNode *p =head,*q;while(p->next){if(p->next->val==val){p->next=p->next->next;}else{p=p->next;}}return head->val == val?head->next:head;}
};
python 递归方法
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution:def removeElements(self, head: ListNode, val: int) -> ListNode:if not head:returnhead.next = self.removeElements(head.next,val)return head.next if head.val == val else head
Leetcode-移除链表元素相关推荐
- LeetCode Algorithm 203. 移除链表元素
203. 移除链表元素 Ideas 这题其实很简单,从头开始遍历,只要遇到node->val==val的通通删除就OK了. Code C++ class Solution {public:Lis ...
- Java实现 LeetCode 203 移除链表元素
203. 移除链表元素 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2 ...
- json移除一个元素_leetcode:203.移除链表元素,听说用虚拟头节点会方便很多?
链表操作中,可以使用原链表来直接进行删除操作,也可以设置一个虚拟头结点在进行删除操作,接下来看一看哪种方式更方便. ❞ 第203题:移除链表元素 题意:删除链表中等于给定值 val 的所有节点. 思路 ...
- day03链表基础_移除链表元素_设计链表_反转链表
链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思). 链表的入口节点称 ...
- 203. 移除链表元素 力扣 c语言
203. 移除链表元素 难度简单843 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 方法1 迭代 也可 ...
- [数据结构]题海啊,全是水(一)移除链表元素、反转链表、链表的中间节点
这个是目录 移除链表元素 分析 第一种情况 第二种情况 第三种情况 代码 反转链表 第一种解法 第二种解法 链表的中间节点 解法一 解法二 最后 菜鸡大学生的数据结构--刷题篇1 自从宇宙大爆炸以来, ...
- LeetCode-链表-203. 移除链表元素
描述 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 示例 1: 输入:head ...
- python移除链表元素
| 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 输入:head = [1,2,6,3,4 ...
- 每日一题——Leetcode203 移除链表元素
如果您是第一次看我写的博客,可以给我点个赞并关注我吗,我会持续分享更多有意思的干货. 文章目录 1 题目 2 思路 3 代码 4 小结 1 题目 Leetcode203 移除链表元素 给你一个链表的头 ...
- 链表-1(链表理论基础、移除链表元素、设计链表翻转链表)
链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思). 单链表 双链表 ...
最新文章
- You Need This One Skill to Succeed in IT--reference
- oracle12c安装卡住_windows上安装oracle 12c到69%时卡住不动解决方案
- C++利用二次探查实现存储机制hash table的算法(附完整源码)
- Design Compiler指南——后综合过程
- java笔记之连接数据库
- docker切换到linux容器模式,linux – 将虚拟主机转换到Docker容器
- 贵州省获批开展公共资源交易区块链数据共享工作试点
- KNN(K临近分类)算法
- Linux中shell脚本获取当前工作目录
- 监控导致设备cpu使用率高的原因
- 罗技鼠标驱动G HUB导致触摸板无法使用
- 小孩儿学计算机可以学些什么,基础知识
- Pygame教程(非常详细)
- 时间序列数据的存储和计算 - 概述
- 成功解决hostname ‘xxx‘ doesn‘t uniquely match the interface ‘ens33‘ selected for the management bridge
- Python销售订单分析。
- 文本编辑器EditPlus
- 计算机信息管理 日语,2017年北京科技大学高职计算机信息管理(第一外语:日语)...
- 解决Vivado implementation拥塞的策略方法(一)
- AES AES/GCM/NoPadding 加密解密
热门文章
- [bzoj4823][洛谷P3756][Cqoi2017]老C的方块
- 怎样为Linux内核打补丁
- [导入]做了一个页面静态化小软件,和大家分享,up有分
- Python学习笔记:Day13 提升开发效率
- 通过printf设置Linux终端输出的颜色和显示方式
- Linux下简单的系统调用
- ubuntu查看系统位数,版本号——百度
- vb跨域访问ajax,解决AJAX的跨域访问-两种有效示例
- Android app集成Google Map方法
- [云炬创业基础笔记]第五章创业机会评估测试8