dengxinyi 6 gadi atpakaļ
vecāks
revīzija
d28e75981d
1 mainītis faili ar 22 papildinājumiem un 0 dzēšanām
  1. 22 0
      medium/525.contiguous-array.go

+ 22 - 0
medium/525.contiguous-array.go

@@ -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
+			}
+		}
+	}
+	return 0
+}