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
        }
    }

    结果

  • 相关阅读:
    Vue优化首页加载速度 CDN引入
    vue中前进刷新、后退缓存用户浏览数据和浏览位置的实践
    node.js
    keep-alive前进没有刷新
    移动端ios和安卓input问题
    前端技术原理
    Vue给子组件传值为空
    使用vue开发输入型组件更好的一种解决方式(子组件向父组件传值,基于2.2.0)
    Vue路由参数设置可有可无
    Vue组件的三种调用方式
  • 原文地址:https://www.cnblogs.com/guohai-stronger/p/11959337.html
Copyright © 2011-2022 走看看