zoukankan      html  css  js  c++  java
  • 删除排序链表中的重复元素--链表

    今天我们开始另一模块的算法题,关于链表的操作. Let's do it !!!

    题目

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次.

    示例1

    输入: 1->1->2
    输出: 1->2

    示例2

    输入: 1->1->2->3->3
    输出: 1->2->3

    思想

    • 首先我们定义好节点结构,包括节点值、指向下一个节点的指针,以及初始化函数
    • 定义current指针指向头节点,以及定义的nextPointer指针指向头节点的下一个元素
    • 只要nextPointer不为空,继续循环
    • 如当前元素!=nextPointer.val 则将current的下一个指针指向nextPointer,并且将current向后移动一个位置
    • 如果相等,说明nextPointer指向的要往后移动,而current不需要动

    代码

    public class ListNode {
        public var val: Int?
        public var next: ListNode?
        public init(_ val: Int) {
            self.val = val
            self.next = nil
        }
    }
    
    func deleteDuplicates(_ head: ListNode?) -> ListNode? {
        var current = head
        var nextPointer = head?.next
        current?.next = nil
        while nextPointer != nil {
            if current?.val == nextPointer?.val {
                nextPointer = nextPointer?.next
            } else {
                current?.next = nextPointer
                current = current?.next
                nextPointer = current?.next
                current?.next = nil //清楚野指针
            }
        }
        return head
    }

    结果

    运行结果如下:

    上面就是本题目的思路和代码,可以直接复制粘贴运行,希望对大家有所帮助!!!

  • 相关阅读:
    参考Shiro的自定义基于Spring的AOP横切模式
    Spring-@Value获取配置文件内容
    BeanPostProcessor Bean实例的初始化前后的自定义修改
    两台Linux主机之间免密scp复制文件及远程启动关闭Tomcat
    Shiro Realm领域
    test
    Linux 安装Oracle数据库
    Shiro Authorizer授权器
    HDU 1079 Calendar Game (博弈)
    MooFest POJ
  • 原文地址:https://www.cnblogs.com/guohai-stronger/p/11926125.html
Copyright © 2011-2022 走看看