525.contiguous-array.go 407 B

123456789101112131415161718192021222324
  1. func findMaxLength(nums []int) (max int) {
  2. n := len(nums)
  3. if n < 2 {
  4. return
  5. }
  6. sum := make([]int, n+1)
  7. m := make(map[int]int)
  8. m[0] = 0
  9. for i := range nums { // Range sum + two sum
  10. if nums[i] == 0 {
  11. sum[i+1] = sum[i] - 1
  12. } else {
  13. sum[i+1] = sum[i] + 1
  14. }
  15. if val, ok := m[sum[i+1]]; ok {
  16. if max < i+1-val {
  17. max = i + 1 - val
  18. }
  19. } else {
  20. m[sum[i+1]] = i + 1
  21. }
  22. }
  23. return
  24. }