func findMaxLength(nums []int) (max int) { n := len(nums) if n < 2 { return } sum := make([]int, n+1) m := make(map[int]int) m[0] = 0 for i := range nums { // Range sum + two sum if nums[i] == 0 { sum[i+1] = sum[i] - 1 } else { sum[i+1] = sum[i] + 1 } if val, ok := m[sum[i+1]]; ok { if max < i+1-val { max = i + 1 - val } } else { m[sum[i+1]] = i + 1 } } return }