云计算百科
云计算领域专业知识百科平台

Leetcode3719. 最长平衡子数组 I

3719. 最长平衡子数组 I – 力扣(LeetCode)

思路

暴力法遍历

解题过程

见代码注释

复杂度

时间复杂度: 𝑂(𝑛^2) 空间复杂度: 𝑂(𝑛)

核心代码

class Solution {
public:
int longestBalanced(vector<int>& nums) {
int n=nums.size();
//1.获取输入数组的长度
int max_len=0;
//2.初始化最长平衡子数组长度为0
for(int l=0;l<n;++l){//3.外层循环:枚举所有子数组起点l(从0到n-1)
unordered_set<int> evens,odds;//4.为当前起点l,初始化两个空集合
for(int r=l;r<n;++r){//5.内层循环:枚举子数组的终点r(从l开始向右扩展)
int num=nums[r];//6.当前要加入子数组的元素
if(num%2==0){//7.若为偶数,插入偶数集合
evens.insert(num);
}else{//8.若为奇数,插入奇数集合
odds.insert(num);
}
if(evens.size()==odds.size()){//9.判断当前子数组[l,r]是否平衡
max_len=max(max_len,r-l+1);//10.若平衡,更新最长长度:当前子数组长度为r-l+1
}
}
}
return max_len;
}
};

赞(0)
未经允许不得转载:网硕互联帮助中心 » Leetcode3719. 最长平衡子数组 I
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!