1. 解题思路
这一题是题目3721. Longest Balanced Subarray II的简单版本,只需要暴力求解即可,倒是没啥需要多说的。
不过可惜的是更有挑战的题目3721我没有搞定,还挺伤的……
2. 代码实现
给出python代码实现如下:
class Solution:
def longestBalanced(self, nums: List[int]) -> int:
n = len(nums)
odd, even = defaultdict(int), defaultdict(int)
for num in nums:
if num % 2 == 0:
even[num] += 1
else:
odd[num] += 1
ans = 0
for i in range(n):
if n-i <= ans:
break
_odd, _even = deepcopy(odd), deepcopy(even)
for j in range(n-1, i, -1):
if j+1 - i <= ans:
break
if len(_odd) == len(_even):
ans = j+1-i
break
if nums[j] % 2 == 0:
_even[nums[j]] -= 1
if _even[nums[j]] == 0:
_even.pop(nums[j])
else:
_odd[nums[j]] -= 1
if _odd[nums[j]] == 0:
_odd.pop(nums[j])
if nums[i] % 2 == 0:
even[nums[i]] -= 1
if even[nums[i]] == 0:
even.pop(nums[i])
else:
odd[nums[i]] -= 1
if odd[nums[i]] == 0:
odd.pop(nums[i])
return ans
提交代码评测得到:耗时1303ms,占用内存18.25MB。
1876

被折叠的 条评论
为什么被折叠?



