首页 > 其他分享 >day03

day03

时间:2022-09-24 14:58:09浏览次数:39  
标签:head ListNode cur day03 next null 节点

leetcode203. 移除链表元素

删除链表中的一个节点分为两种情况 ,节点是头结点和不是头结点

两种方法

方法1:头结点和其他节点分开处理

class Solution {    //不使用虚拟头结点方法
    public ListNode removeElements(ListNode head, int val) {
        while(head!=null&&head.val==val){      //头部元素提前处理,处理完后  head不存在等于val情况
            head=head.next;
        }
        ListNode cur=head;
        while(cur!=null&&cur.next!=null){       //cur指向头部开始  cur  不能等于null且cur.next不能等于null              cur充当  要删除节点的 前节点
            if(cur.next.val==val){
                cur.next=cur.next.next;
            }else{
                cur=cur.next;
            }
        }
        return head;
    }
}

方法2:设置虚拟头结点

//设置虚拟头结点的作用是使头节点和其他节点的处理方式一样
class Solution {    //不使用虚拟头结点方法
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummyhead=new ListNode(-1,head);
        ListNode cur=dummyhead;      //设置头结点    
        while(cur.next!=null){
            if(cur.next.val==val){
                cur.next=cur.next.next;
            }else{
                cur=cur.next;
            }
        }
        return dummyhead.next;
    }
}

LeetCode:206.反转链表

//双指针法
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode cur=head;
        ListNode pred=null;


        while(cur!=null){
            ListNode temp=cur.next;      //temp保存  cur之后的指向 防止断连
            cur.next=pred;              //反转cur 的指向 反转链表
            pred=cur;                   //pred  到下一个位置 也就是 cur
            cur=temp;           //cur 到下一个位置    也就是 一开始 temp的位置
        }
        return  cur;    //经过遍历之后 cur 指向了null 最后终止循环, 所以  头节点应该是pred

//反转一个节点的顺序 :
//  1:先把该节点的下一个节点保存
//  2:反转该节点的方向
//  3: 该节点的前一个指针(先移动pred 再移动cur) 和当前指针向后移动一位  遍历到下一个节点
    }
}

//递归写法
class Solution {
    public ListNode reverseList(ListNode head) {
        return reverse(null,head);
    }
    private ListNode reverse(ListNode pre,ListNode cur){
        if(cur==null){
            return pre;
        }
        ListNode temp=cur.next;
        cur.next=pre;
        return reverse(cur,temp);
    }
}

标签:head,ListNode,cur,day03,next,null,节点
From: https://www.cnblogs.com/wdnmdp/p/16725634.html

相关文章

  • python学习之路Day03(pyhcarm基础配置/python基础语法/简单数据类型)
    今日内容概要pycharm基础设置PEP-8规范/python基础语法变量与常量定义基本数据类型(整形int,字符串str,浮点型float,字典dict,列表list)首先我们要学习Pycharm......
  • day03
    今日内容详细pycharm的使用在进入pycharm后需要打开python翻译器在pycharm中打开python翻译器有两种方法方法一打开pycharm后选择file然后选择setting—......
  • day03-2无异常退出
    多用户即时通讯系统034.编码实现024.3功能实现-无异常退出系统4.3.1思路分析上述代码运行时,在客户端选择退出系统的时候,可以发现程序并没有停止运行,原因是:退出时,程序......
  • day03-代码实现02
    多用户即时通讯系统034.编码实现024.2功能实现-拉取在线用户4.2.1思路分析客户端想要知道在线用户列表,就要向服务器发送请求(Message),因为只有服务器端保持着所有与客......
  • Day03
                         ......
  • JavaLearnDay03
    转义字符引用数据类型·特点:存储一个引用(内存地址)通过引用指向内存地址中的数据值·字符串类型:关键字:String作用:存储多个字符补充内容:在Java中所有整数默认为int......
  • JavaStudy Day03-循环 条件判断
    一、while循环死循环/***死循环*/while(true){System.out.println("helloworld");}循环的三要素publicc......
  • Day03列表标签
    列表什么是列表?就是信息资源的一种展示形式,它可以使信息结构化条理化,并以列表的样式显示出来,一边浏览者能更快地获得相应的信息列表的分类:无序列表有序列表定义列表......
  • day03笔记
    1.立方体案例(了解)1.抽象立方体:属性,长宽高,方法:设置和获取属性的方法,判断两个立方体是否相等的方法2.一个对象必须要初始化成员变量3.成员函数中隐藏了一个本类的对象2......
  • 每天都进步的课堂随笔Day03
    JavaProcessingControl(流程控制)userinteractionScanner(用户交互scanner)sequentialstructrue(顺序结构)casestructrue(选择结构)loopstructrue(循环结......