45.go 762 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package main
  2. func jumpSlow(nums []int) (steps int) { // TLE?
  3. n := len(nums)
  4. if n == 0 {
  5. return
  6. }
  7. dist := make([]int, n)
  8. for i := range nums {
  9. for j := 1; j <= nums[i] && i+j < n; j++ {
  10. if dist[i+j] == 0 || dist[i] < dist[i+j] {
  11. dist[i+j] = dist[i] + 1
  12. }
  13. }
  14. }
  15. return dist[n-1]
  16. }
  17. func jump(nums []int) (steps int) {
  18. n := len(nums)
  19. if n <= 1 {
  20. return
  21. }
  22. stop, nextStop := nums[0], nums[0]
  23. for i := range nums {
  24. if nextStop < i+nums[i] {
  25. nextStop = i + nums[i]
  26. }
  27. if i == stop || i == n-1 {
  28. stop = nextStop
  29. steps++
  30. }
  31. }
  32. return
  33. }
  34. // func main() {
  35. // n := []int{2, 3, 1, 1, 4}
  36. // println(jump(n))
  37. // n = []int{}
  38. // println(jump(n))
  39. // n = []int{2, 1}
  40. // println(jump(n))
  41. // n = []int{0}
  42. // println(jump(n))
  43. // }