加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[Swift]LeetCode203. 移除链表元素 | Remove Linked List Elemen

发布时间:2020-12-14 05:08:29 所属栏目:百科 来源:网络整理
导读:Remove all elements from a linked list of integers that have value? val . Example: Input: 1-2-6-3-4-5-6, val = 6Output: 1-2-3-4-5 删除链表中等于给定值? val? 的所有节点。 示例: 输入: 1-2-6-3-4-5-6, val = 6输出: 1-2-3-4-5 72ms 1 /* * 2 * Def

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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读