83. 删除排序链表中的重复元素

image.png

  1. package main
  2. import "fmt"
  3. type ListNode struct {
  4. Val int
  5. Next *ListNode
  6. }
  7. func deleteDuplicates(head *ListNode) *ListNode {
  8. m :=make(map[int]struct{})
  9. curr := head
  10. var pre *ListNode
  11. for curr!=nil{
  12. tmp := curr.Next
  13. if _,ok:=m[curr.Val];ok{
  14. pre.Next = tmp
  15. curr.Next = nil
  16. }else {
  17. pre = curr
  18. m[curr.Val] = struct{}{}
  19. }
  20. curr = tmp
  21. }
  22. return head
  23. }
  24. func main() {
  25. a :=ListNode{
  26. Val: 1,
  27. }
  28. b :=&ListNode{
  29. Val: 1,
  30. }
  31. a.Next =b
  32. c :=&ListNode{
  33. Val: 2,
  34. }
  35. b.Next = c
  36. d :=&ListNode{
  37. Val: 3,
  38. }
  39. c.Next = d
  40. f :=&ListNode{
  41. Val: 3,
  42. }
  43. d.Next =f
  44. r := deleteDuplicates(&a)
  45. for r!=nil{
  46. fmt.Println(r.Val)
  47. r = r.Next
  48. }
  49. }

image.png