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

算法——移除链表元素(leetcode203)

移除链表元素首先我们要理解链表这种数据结构,它跟数组不一样它可以分布在内存中的各个位置链表节点由值和指针组成,指针指向下一个链表节点。

移除链表元素简而言之就是将符合条件的链表节点给移除出去我们不能直接将其移除而是通过将被移除节点的上一个节点的指针指向被移除节点的下一个节点的地址就完成了链表元素的移除操作特别要注意的是java中是有内存回收机制的所以不需要手动释放节点而c++是需要的。

方法一(单独处理头结点)

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeElements(ListNode head, int val) {//处理头结点while(head!=null&&head.val==val){head=head.next;}ListNode cur=head;while(cur!=null&&cur.next!=null){if(cur.next.val==val){cur.next=cur.next.next;}else{cur=cur.next;}}return head;}
}

方法二(创建一个虚拟节点next指针指向头结点)

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeElements(ListNode head, int val) {//定义一个虚拟节点ListNode vNode=new ListNode();vNode.next=head;ListNode cur=vNode;while(cur.next!=null){if(cur.next.val==val){cur.next=cur.next.next;}else{cur=cur.next;}}return vNode.next;}
}


http://www.mrgr.cn/news/74871.html

相关文章:

  • P8692 [蓝桥杯 2019 国 C] 数正方形:结论,组合数学
  • nginx 配置lua执行shell脚本
  • 深度学习day3-自动微分
  • 【网络安全设备系列】3、IPS(入侵防御系统)
  • 定时器的小应用
  • 1、使用vscode+eide+stm32cubeMx开发stm32
  • 单片机设计电流与温度监控python上位机监控平台设计
  • 三维点云 和模型转换的问题
  • 【Linux】多线程(中)
  • maven 中存在jar包,但是pom无法依赖
  • ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic
  • ABAP开发学习——权限控制
  • 重磅!EN 1888-3欧盟婴儿手推车标准更新
  • 从H264视频中获取宽、高、帧率、比特率等属性信息
  • 【轻松解决】Defender SmartScreen 风险提示
  • 意式轻奢风!
  • shell批量重命名
  • 【SQL】一文速通SQL
  • aitrader双界面引擎(dash和streamlit),引入zvt作为数据获取及存储支持
  • 前端数据可视化库介绍Echarts、D3.js、Plotly、Matplotlib
  • ssh登陆服务器后支持Tab键命令补全
  • 改扩配系列:浪潮英政服务器CS5280H2、IR5280H2——板载前置3.5寸*12口背板
  • 抠图软件哪个好用?8款抠图软件轻松实现一键抠图!
  • Java EE 技术基础知识体系梳理
  • MATLAB保存多帧图形为视频格式
  • 【redis】—— 初识redis(redis基本特征、应用场景、以及重大版本说明)