class Solution {
public:
int findMaxLength(vector<int>& nums) {
}
};
525. 连续数组
给定一个二进制数组 nums
, 找到含有相同数量的 0
和 1
的最长连续子数组,并返回该子数组的长度。
示例 1:
输入: nums = [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。
示例 2:
输入: nums = [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。
提示:
1 <= nums.length <= 105
nums[i]
不是 0
就是 1
相似题目
原站题解
python3 解法, 执行用时: 212 ms, 内存消耗: 19.7 MB, 提交时间: 2022-11-23 11:31:06
class Solution: def findMaxLength(self, nums: List[int]) -> int: mp = {0: -1} counter = 0 maxLength = 0 for i, num in enumerate(nums): if num == 1: counter += 1 else: counter -= 1 if counter in mp: maxLength = max(maxLength, i - mp[counter]) else: mp[counter] = i return maxLength
golang 解法, 执行用时: 100 ms, 内存消耗: 7.2 MB, 提交时间: 2022-11-23 11:23:30
func findMaxLength(nums []int) (maxLength int) { mp := map[int]int{0: -1} counter := 0 for i, num := range nums { if num == 1 { counter++ } else { counter-- } if prevIndex, has := mp[counter]; has { maxLength = max(maxLength, i-prevIndex) } else { mp[counter] = i } } return } func max(a, b int) int { if a > b { return a } return b }