123456789101112131415161718192021222324 |
- 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
- }
|