1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| func alternatingSubarray(nums []int) int { n := len(nums) ans := -1 for i := 0; i < n; i++ { ans = max(ans, maxAlternating(nums[i:])) } return ans }
func maxAlternating(nums []int) int { n := len(nums) if n <= 1 { return -1 } ans := 1 for i := 1; i < n; i++ { if ((i&1) == 0 && nums[i] != nums[i-2]) || ((i&1) == 1 && nums[i] != nums[i-1]+1) { break } ans++ } if ans == 1 { return -1 } return ans }
func max(num1, num2 int) int { if num1 >= num2 { return num1 } return num2 }
|