@@ -0,0 +1,22 @@
+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
+}