Skip to content

Commit 808fc02

Browse files
author
hero
committed
删掉一个元素以后全为 1 的最长子数组
1 parent 55f7e96 commit 808fc02

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

leet_code/longestSubarray_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package leet_code
2+
3+
import (
4+
"testing"
5+
)
6+
7+
//删掉一个元素以后全为 1 的最长子数组
8+
func longestSubarray(nums []int) int {
9+
var (
10+
sum = 0
11+
left = 0
12+
right = 0
13+
max = 0
14+
)
15+
for right = 0; right < len(nums); right++ {
16+
sum += nums[right]
17+
for left < right && sum <= right-left-1 {
18+
if nums[left] == 1 {
19+
sum--
20+
}
21+
left++
22+
}
23+
if max < right-left {
24+
max = right - left
25+
}
26+
}
27+
return max
28+
}
29+
30+
func longestSubarrayV2(nums []int) int {
31+
var (
32+
sum = 0
33+
left = 0
34+
right = 0
35+
)
36+
for i := 0; i < len(nums); i++ {
37+
if nums[i] == 1 {
38+
left++
39+
right++
40+
if sum < left {
41+
sum = left
42+
}
43+
} else {
44+
left = right
45+
right = 0
46+
}
47+
}
48+
if sum == len(nums) {
49+
sum--
50+
}
51+
return sum
52+
}
53+
54+
func Test_longestSubarray(t *testing.T) {
55+
var data = []int{0, 1, 1, 1, 0, 1, 1, 0, 1}
56+
t.Log(longestSubarray(data))
57+
}

0 commit comments

Comments
 (0)