3719.最长平衡子数组 I:I先(几乎)暴力了
【LetMeFly】3719.最长平衡子数组 I:I先(几乎)暴力了
力扣题目链接:https://leetcode.cn/problems/longest-balanced-subarray-i/
给你一个整数数组 nums。
如果子数组中 不同偶数 的数量等于 不同奇数 的数量,则称该 子数组 是 平衡的 。
返回 最长 平衡子数组的长度。
子数组 是数组中连续且 非空 的一段元素序列。
示例 1:
输入: nums = [2,5,4,3]
输出: 4
解释:
- 最长平衡子数组是
[2, 5, 4, 3]。 - 它有 2 个不同的偶数
[2, 4]和 2 个不同的奇数[5, 3]。因此,答案是 4 。
示例 2:
输入: nums = [3,2,2,5,4]
输出: 5
解释:
- 最长平衡子数组是
[3, 2, 2, 5, 4]。 - 它有 2 个不同的偶数
[2, 4]和 2 个不同的奇数[3, 5]。因此,答案是 5。
示例 3:
输入: nums = [1,2,3,2]
输出: 3
解释:
- 最长平衡子数组是
[2, 3, 2]。 - 它有 1 个不同的偶数
[2]和 1 个不同的奇数[3]。因此,答案是 3。
提示:
1 <= nums.length <= 15001 <= nums[i] <= 105
解题方法:二重循环
第一层循环枚举子数组的起点,第二层循环枚举子数组的终点。
在第一层循环中,使用一个哈希表去重,使用一个整数记录奇数偶数的diff。
若第二层循环到的数未在子数组中出现过,则更新diff、加入到哈希表、若diff为零更新ans。
- 时间复杂度$O(len(nums)^2)$
- 空间复杂度$O(len(nums))$
AC代码
C++
1 | |
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
3719.最长平衡子数组 I:I先(几乎)暴力了
https://blog.letmefly.xyz/2026/02/10/LeetCode 3719.最长平衡子数组I/