LeetCode 203. 【移除链表元素】go语言版

2020/04/26 算法 共 521 字,约 2 分钟

题目描述

删除链表中等于给定值 _val _的所有节点。 示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
链接:https://leetcode-cn.com/problems/remove-linked-list-elements/

解题思路

  • 单向链表的查询只能靠遍历方式查找,可以通过增加一个hashmap来加快查询效率
  • 链表的删除比较简单,前一个结点直接指向下一个结点即可
  • 需要注意删除头结点和尾结点时要特殊处理一下

Code

func removeElements(head *ListNode, val int) *ListNode {
    current := head
	var pre *ListNode = nil
	for current != nil {
		if current.Val == val {
			//头元素
			if pre == nil {
				head = current.Next
			} else {
				pre.Next = current.Next
			}
		} else {
			pre = current
		}
        current = current.Next
	}
	return head
}

文档信息

Search

    Table of Contents