面试题25. 合并两个排序的链表

image.png

创建2个指针同时移动

  1. package main
  2. import "fmt"
  3. type ListNode struct {
  4. Val int
  5. Next *ListNode
  6. }
  7. func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
  8. dummyHead :=&ListNode{Val: -1,}
  9. curr :=dummyHead
  10. for l1!=nil||l2!=nil{
  11. if l1!=nil&&l2!=nil{
  12. if l1.Val<l2.Val{
  13. curr.Next = l1
  14. curr = l1
  15. l1 =l1.Next
  16. }else {
  17. curr.Next = l2
  18. curr = l2
  19. l2 =l2.Next
  20. }
  21. }else if l1!=nil{
  22. curr.Next = l1
  23. break
  24. }else {
  25. curr.Next = l2
  26. break
  27. }
  28. }
  29. return dummyHead.Next
  30. }
  31. //面试题25. 合并两个排序的链表
  32. func main() {
  33. l1:=&ListNode{Val: 1,}
  34. two:=&ListNode{Val: 2,}
  35. l1.Next=two
  36. four:=&ListNode{Val: 4,}
  37. two.Next=four
  38. l2:=&ListNode{Val: 1,}
  39. three:=&ListNode{Val: 3,}
  40. l2.Next=three
  41. f:=&ListNode{Val: 4,}
  42. three.Next=f
  43. h := mergeTwoLists(l1,l2)
  44. for h!=nil{
  45. fmt.Println(h.Val)
  46. h =h.Next
  47. }
  48. }

image.png