203. 移除链表元素

Posted lgz0921

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了203. 移除链表元素相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/remove-linked-list-elements/

思路:建立一个新的头节点指向head,这样的原因是好判断删除。然后用一个临时指针来进行操作(临时指针等于新的头节点,原因是好用next的那个节点判断),当碰到相等的节点值,就把next指向next的next即可,如果不相等就移动到next节点即可。

上代码:

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
class Solution {
    fun removeElements(head: ListNode?, `val`: Int): ListNode? {
        val newHead = ListNode(0)
        newHead.next = head
        var tmp = newHead
        while (tmp.next != null) {
            when (tmp.next!!.`val`) {
                `val` -> tmp.next = tmp.next!!.next
                else -> tmp = tmp.next!!
            }
        }
        return newHead.next
    }
}

 

以上是关于203. 移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章

代码随想录算法训练营第三天 | 203.移除链表元素707.设计链表 206.反转链表

代码随想录算法训练营第三天 | 203.移除链表元素707.设计链表 206.反转链表

203. 移除链表元素

203. 移除链表元素

203. 移除链表元素

203. 移除链表元素