• LeetCode移除链表元素Swift


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

    示例:

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

    思路一:添加虚拟结点

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     public var val: Int
     *     public var next: ListNode?
     *     public init(_ val: Int) {
     *         self.val = val
     *         self.next = nil
     *     }
     * }
     */
    class Solution {
        func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
            let dummyNode = ListNode.init(-1)
            dummyNode.next = head
            var p = dummyNode
            while p.next != nil {
                if p.next!.val != val {
                    p = p.next!
                } else {
                    p.next = p.next?.next
                }
            }
            return dummyNode.next
        }
    }

    思路二:递归(难以理解)

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     public var val: Int
     *     public var next: ListNode?
     *     public init(_ val: Int) {
     *         self.val = val
     *         self.next = nil
     *     }
     * }
     */
    class Solution {
        func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
            guard let head = head else { return nil }
            head.next = self.removeElements(head.next, val)
            return head.val == val ? head.next : head
        }
    }
  • 相关阅读:
    _1_html_框架
    _0_web_基础
    _0_工具
    虚拟机安装与使用
    NumPy数据类型
    NumPy Ndarray对象
    机器学习之K-近邻(KNN)算法
    vue项目如何打包扔向服务器
    Eslint 规则说明
    Python ssh 远程执行shell命令
  • 原文地址:https://www.cnblogs.com/huangzs/p/14201113.html
Copyright © 2020-2023  润新知