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