zoukankan      html  css  js  c++  java
  • [Swift]LeetCode203. 移除链表元素 | Remove Linked List Elements

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10184259.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Remove all elements from a linked list of integers that have value val.

    Example:

    Input:  1->2->6->3->4->5->6, val = 6
    Output: 1->2->3->4->5

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

    示例:

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

    72ms
     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     public var val: Int
     5  *     public var next: ListNode?
     6  *     public init(_ val: Int) {
     7  *         self.val = val
     8  *         self.next = nil
     9  *     }
    10  * }
    11  */
    12 class Solution {
    13     func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
    14         guard head != nil else { return nil }
    15         
    16         var head = head
    17         while head != nil, head!.val == val {
    18             head = head?.next
    19         }
    20         
    21         var prev = head
    22         var current = head?.next
    23         
    24         while let curr = current {
    25             if curr.val == val {
    26                 prev?.next = curr.next
    27                 current = curr.next
    28                 continue
    29             }
    30             prev = curr
    31             current = curr.next
    32         }
    33         
    34         return head
    35     }
    36 }

    76ms

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     public var val: Int
     5  *     public var next: ListNode?
     6  *     public init(_ val: Int) {
     7  *         self.val = val
     8  *         self.next = nil
     9  *     }
    10  * }
    11  */
    12 class Solution {
    13     func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
    14         guard let head = head else { return nil }
    15         head.next = removeElements(head.next, val)
    16         return head.val == val ? head.next : head
    17     }
    18 }

    80ms

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     public var val: Int
     5  *     public var next: ListNode?
     6  *     public init(_ val: Int) {
     7  *         self.val = val
     8  *         self.next = nil
     9  *     }
    10  * }
    11  */
    12 class Solution {
    13     func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
    14 
    15         var dummy = ListNode(-1)
    16         dummy.next = head
    17         var cur = dummy
    18         while cur.next != nil {
    19             if cur.next!.val == val {
    20                 cur.next = cur.next!.next
    21             }
    22             else{
    23                 cur = cur.next!
    24             }
    25         }
    26         return dummy.next
    27     }
    28 }

    96ms

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     public var val: Int
     5  *     public var next: ListNode?
     6  *     public init(_ val: Int) {
     7  *         self.val = val
     8  *         self.next = nil
     9  *     }
    10  * }
    11  */
    12 
    13 class Solution {
    14     func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
    15         guard let _ = head else {
    16             return nil
    17         }
    18         
    19         //在表头添加一个哨兵节点
    20         let fakeNode = ListNode(NSNotFound)
    21         fakeNode.next = head
    22         var prev:ListNode = fakeNode
    23         var current:ListNode? = head
    24         while let tmp = current {
    25             if tmp.val != val {
    26                 prev.next = tmp
    27                 prev = prev.next!
    28             }
    29             current = tmp.next
    30         }
    31         
    32         if prev.next != nil {
    33             prev.next = nil
    34         }
    35         return fakeNode.next
    36     }
    37 }
  • 相关阅读:
    MySQL RR隔离 读一致性
    C++奥赛一本通刷题记录(高精度)
    CodeVs天梯之Diamond
    CodeVs天梯之Gold
    CodeVs天梯之Silver
    CodeVs天梯之Bronze
    【2018.1.14】本蒟蒻又回来了
    test
    UVa12545
    UVa1149
  • 原文地址:https://www.cnblogs.com/strengthen/p/10184259.html
Copyright © 2011-2022 走看看