IOS 算法(基础篇) ----- 删除链表中的节点

2020-12-08  本文已影响0人  ShawnAlex

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。

例子:

example

输入:head = [4,5,1,9], node = 5
输出:[4,1,9]
解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

输入:head = [4,5,1,9], node = 1
输出:[4,5,9]
解释:给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

思路

入参的这个节点就是我们要删掉的节点。我们可以把当前节点的下个节点的值赋值给当前节点,然后令当前节点的next指向当前节点的下一个节点的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 deleteNode(_ node: ListNode?) {
        node?.val = (node?.next!.val)!
        node?.next = node?.next?.next
    }
}

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

上一篇 下一篇

猜你喜欢

热点阅读