zoukankan      html  css  js  c++  java
  • 移除链表元素--链表

    题目

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

    示例:

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

    解法一

    思路

    1.  首先判断链表是否为空以及链表的第一个节点是不是等于val(该删除的节点),循环遍历到第一个不等于val的节点

    2.  以p.next判断节点是否为空,然后判断p.next.val == val 

        如果相等,则指向p.next 的下一个节点 p.next = p.next?.next

        如果不相等,则将元素后移,继续判断 p = p.next!

    3.  返回head,完成操作

    代码

    public class ListNode {
        public var val: Int
        public var next: ListNode?
        public init (_ val: Int) {
            self.val = val
            self.next = nil
        }
    }
    
    func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
        var head = head //swift中传值为let不可变,所以转为var可变
        while head != nil && head?.val == val {
            head = head?.next
        }
        if head == nil {
            return head
        }
        var p: ListNode = head!
        while p.next != nil {
            if p.next?.val == val {
                p.next = p.next?.next
            } else {
                p = p.next!
            }
        }
        return head
    }

    解法二: 递归

    思想

    1. 首先判断链表是否为空

    2. 递归removeElements(head?.next, val)判断值

    3. 返回head,完成操作

    代码

    public class ListNode {
        public var val: Int
        public var next: ListNode?
        public init (_ val: Int) {
            self.val = val
            self.next = nil
        }
    }
    
    func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
        let head = head //swift中传值为let不可变,所以转为var可变
        if head == nil {
            return head
        }
        head?.next = removeElements(head?.next, val)
        if head?.val == val {
            return head?.next
        } else {
            return head
        }
    }

    结果

  • 相关阅读:
    Java总结(三)之String、StringBuffer、StringBuilder区别
    Java总结(二)之字符串常用操作
    Java总结(一)之四类八种数据类型
    schema.xml的配置
    MySQL server has gone away问题得解决方案
    如何在Java中将Excel转化为XML格式文件
    FileItemFactory 接口的介绍
    小练习2
    小练习
    while else 练习题
  • 原文地址:https://www.cnblogs.com/guohai-stronger/p/11959337.html
Copyright © 2011-2022 走看看