82. 删除排序链表中的重复元素删除排序链表中的重复元素 II
链接链接
题目.
难度难度:
middle
解答:解答:
链表常规玩法。用一个dummyHead好办一些
package main
import (
"fmt"
)
type ListNode struct {
Val int
Next *ListNode
}
func printList(root *ListNode) {
num := 0
for root != nil {
fmt.Printf("->%d", root.Val)
root = root.Next
num++
if num > 20 {
break
}
}
fmt.Println("....")
}
func deleteDuplicates(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}
dummyHead := new(ListNode)
dummyTail := dummyHead
beforeNode, beforeDup := head, false
for cur := head.Next; cur != nil; cur = cur.Next {
fmt.Println("checking", cur.Val)
if cur.Val == beforeNode.Val {
beforeDup = true
} else {
if !beforeDup {
fmt.Println("inserting", beforeNode.Val)
dummyTail.Next = beforeNode
dummyTail = beforeNode
}
beforeNode, beforeDup = cur, false
}
}
if !beforeDup {
dummyTail.Next = beforeNode
dummyTail = beforeNode
}
dummyTail.Next = nil
评论0
最新资源