两种方式:

package com.lt.datastructure.LinkedList;
/**
* leetCode 203题
* /**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
* 第一种:不使用虚拟头结点
* 首先考虑头结点,头结点为空,返回null,如果头结点不为空,其值为val,删除头结点。
* 然后考虑非头结点,遍历链表,如果找到,删除
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
//如果头结点不为空,其值为val,删除头结点
while(head != null && head.val == val){
ListNode delNode = head;
head = head.next;
delNode.next = null;
}
if(head==null) return null;
//考虑非头结点,遍历链表,如果找到,删除
ListNode prev = head;
while(prev.next!=null){
if(prev.next.val==val){
ListNode delNode = prev.next;
prev.next = delNode.next;
delNode.next = null;
}else{
prev = prev.next;
}
}
return head;
} /**
* 第二种:使用虚拟头结点
*/
class Solution2 {
public ListNode removeElements(ListNode head, int val) {
//使用虚拟头结点简化第一种方式的代码
ListNode dummyhead = new ListNode(-1);
//指向head头结点
dummyhead.next = head;
ListNode prev = dummyhead;
while(prev.next!=null){
if(prev.next.val == val){
prev.next = prev.next.next;
}else{
prev = prev.next;
}
}
return dummyhead.next;
}
}
}

十五 链表与递归,leetCode203题的更多相关文章

  1. python学习三十五天函数递归的用法

    python函数递归就是自己调用自己,无限循环,但是python限制了调用的次数1000次,就会终止,递归用在栏目分类,采集程序比较多,下面简单说函数递归用法和实例 1,函数递归用法 def func ...

  2. 剑指Offer(二十五):复杂链表的复制

    剑指Offer(二十五):复杂链表的复制 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...

  3. 第十五章、Python多线程同步锁,死锁和递归锁

    目录 第十五章.Python多线程同步锁,死锁和递归锁 1. 引子: 2.同步锁 3.死锁 引子: 4.递归锁RLock 原理: 不多说,放代码 总结: 5. 大总结 第十五章.Python多线程同步 ...

  4. 递归一题总结(OJ P1117倒牛奶)

    题目:                    农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数,最初,A和B桶都是空的,而C桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另 ...

  5. 十五个最常用Linux命令行 - imsoft.cnblogs

    众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的.在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令 ...

  6. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. javaSE第十五天

    第十五天    117 1. 对象数组(掌握)    117 (1)定义:    117 (2)对象数组的内存图解    117 (3)案例:    117 2. 集合(Collection)(掌握) ...

  8. JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...

  9. JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习

    JAVA之旅(二十九)--文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习 我们继续学习File 一.文件递归 我们可以来实现 ...

随机推荐

  1. 洛谷 P5018 对称二叉树(搜索)

    嗯... 题目链接:https://www.luogu.org/problem/P5018 其实这道题直接搜索就可以搜满分: 首先递归把每个点作为根节点的儿子的数量初始化出来,然后看这个节点作为根节点 ...

  2. ECMAScript中的箭头函数 (=>) 使用注意事项

    箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或 new.target.这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数. 箭 ...

  3. laravel 动态属性

    我们在 User 模型里定义了关联方法 followings() 关联关系定义好后,我们就可以通过访问 followings 属性直接获取到关注用户的 集合.这是 Laravel Eloquent 提 ...

  4. .NET中的字符串(5):字符串驻留

    StringBuilder对象 通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间.这样就引出 ...

  5. 搭建一个maven管理的ssm项目需要配置那些文件

    链接:https://blog.csdn.net/java987654/article/details/80746866

  6. STM32cubeMX安装FW_F4容易出错失败的解决办法

    在CUBEMXV5.30安装F4的支持包V1.241的反复失败,无法自动生成代码.后来发现了一种办法: 在stm32的官网下载V1.24.0和en.patch_cubefw_f4.zip(V1.24. ...

  7. ubuntu 16.04 XDRP实现Windows远程访问

    如何通过XDRP实现Windows远程访问 下面才是本文的重点,本文主要是讲xrdp在目前最新版Ubuntu 16.04下,如果实现Windows远程访问.网上也很多相关教程,但是都需要安装xfac4 ...

  8. Fedora26同步仓库缓存失败问题实记

    虽然目前的linux已经能自动选择最快的源,但是官方提供的镜像列表仍然较少,速度虽有所提升但是整体依然较慢,阿里的源作为国内最快的源却没有被纳入官方提供的源中 国内常使用的源有阿里,中科大,清华,网易 ...

  9. 自定义Redis作为Session存储服务提供

    之前看网上介绍可使用Redis自定义Session托管,使用第三方的Harbour.RedisSessionStateStore GitHub:https://github.com/TheCloudl ...

  10. Python开发:Python运算符

    运算符 1.算数运算: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返 ...