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
}