func findMaxLength(nums []int) int { n := len(nums) if n < 2 { return 0 } dp := make([]int, n+1) for i := range nums { if nums[i] == 0 { dp[i+1] = dp[i] } else { dp[i+1] = dp[i] + 1 } } for l := n / 2 * 2; 2 <= l; l -= 2 { for i := n; 0 <= i-l; i-- { // On^2 if dp[i]-dp[i-l] == l/2 { return l } } } return 0 }