博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表与递归
阅读量:5163 次
发布时间:2019-06-13

本文共 1689 字,大约阅读时间需要 5 分钟。

链表与递归

LeetCode第203题

 

题目:

删除链表中等于给定值 val 的所有节点。
示例:

输入: 1->2->6->3->4->5->6, val = 6

输出: 1->2->3->4->5

1.不使用虚拟头节点

public class Solution {    public ListNode removeElements(ListNode head, int val) {        // 链表不为空,并且头节点就是要删除的元素        while (head != null && head.val == val) {            ListNode delNode = head;            head = head.next;            delNode.next = null;        }        if (head == null) {             // 所有元素都是要删除的元素,并且在上面已经删完            return head;        } else {             // 现在的链表头节点不是要删除的元素            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;        }    }}

2.使用虚拟头节点

 

public class Solution2 {

public ListNode removeElements(ListNode head, int val) {    // 虚拟头节点    ListNode dummyHead = new ListNode(0);    dummyHead.next = head;    ListNode prev = dummyHead;    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 dummyHead.next;}

}

3.递归

public class Solution3 {    public ListNode removeElements(ListNode head, int val) {        if (head == null) {            return head;        }        head.next = removeElements(head.next, val);        return head.val == val ? head.next : head;    }}

原文地址:

转载于:https://www.cnblogs.com/lalalagq/p/9971518.html

你可能感兴趣的文章
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
读《构建之法-软件工程》第四章有感
查看>>
使用 Printf via SWO/SWV 输出调试信息
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
吴恩达机器学习笔记 —— 3 线性回归回顾
查看>>
Problem E: Automatic Editing
查看>>
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>