414.third-maximum-number.go 800 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. func thirdMax(nums []int) int {
  2. max := make([]int, 3)
  3. l := 0
  4. for _, i := range nums {
  5. switch l {
  6. case 0:
  7. max[0] = i
  8. l++
  9. case 1:
  10. if i == max[0] {
  11. continue
  12. }
  13. if i < max[0] {
  14. max[1] = i
  15. } else {
  16. max[0], max[1] = i, max[0]
  17. }
  18. l++
  19. case 2:
  20. if max[0] == i || max[1] == i {
  21. continue
  22. }
  23. if i < max[1] {
  24. max[2] = i
  25. } else if i < max[0] {
  26. max[1], max[2] = i, max[1]
  27. } else {
  28. max[0], max[1], max[2] = i, max[0], max[1]
  29. }
  30. l++
  31. case 3:
  32. if max[0] == i || max[1] == i || max[2] == i || i < max[2] {
  33. continue
  34. }
  35. if i < max[1] {
  36. max[2] = i
  37. } else if i < max[0] {
  38. max[1], max[2] = i, max[1]
  39. } else {
  40. max[0], max[1], max[2] = i, max[0], max[1]
  41. }
  42. }
  43. }
  44. if l < 3 {
  45. return max[0]
  46. }
  47. return max[l-1]
  48. }