当前位置: 首页 > news >正文

LeetCode刷题系列 -- 525. 连续数组

给定一个二进制数组 nums , 找到含有相同数量的 01 的最长连续子数组,并返回该子数组的长度。

示例 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

525. 连续数组 - 力扣(Leetcode)

思路

题目可以理解为 求一个子数组,其中 0 与 1 的个数相等。这里我们考虑用一下前缀和。
不知道怎么用前缀和的方式?
来个乾坤大挪移。。。
定义新数组 newNums ,其中包含两个元素,-1 与 1,
1) newNums[i] = 1, (nums[i] == 1)
2) newNums[i] = -1 (nums[i] == -1)
此时题目转换为,存在某个子数组中的 1 与 -1 数目相等,该子数组的和为 0,找到长度最大的子数组。
剩下的思路就与 (1条消息) LeetCode刷题系列 -- 523. 连续的子数组和_在河之洲木水的博客-CSDN博客 是一致的

c++

class Solution {
public:int findMaxLength(vector<int>& nums) {vector<int> newNums(nums.size(), 0);for(int i=0; i<nums.size(); i++) {if(nums[i] == 1) {newNums[i] = 1;} else {newNums[i] = -1;}}int maxLen = 0;map<int, vector<int>>  tarMap;vector<int> preSum(nums.size(), 0); // 前缀和 preSum[i] = nums[0] + ... + nums[i]for(int i=0; i<newNums.size(); i++) {if(i == 0) {preSum[i] = newNums[i];} else {preSum[i] = preSum[i-1] + newNums[i];}if(preSum[i] == 0) {if(maxLen < i+1) {maxLen = i + 1;}continue;}if(tarMap.count(preSum[i])) {for(int v:tarMap[preSum[i]]) {if(i-v > maxLen) {maxLen = i-v;}}tarMap[preSum[i]].push_back(i);} else {vector<int> vec;vec.push_back(i);tarMap[preSum[i]] = vec;     }}return maxLen;}
};
http://www.lryc.cn/news/174.html

相关文章:

  • JavaEE15-Spring Boot统一功能处理
  • centos7.6 设置防火墙
  • 在线支付系列【22】微信支付实战篇之集成服务商API
  • 3.2 埃尔米特转置
  • Python爬虫之Scrapy框架系列(13)——实战ZH小说爬取数据入MySql数据库
  • MySQL篇02-三大范式,多表查询
  • vue-cli3创建Vue项目
  • Linux perf probe 的使用(三)
  • python GUI编程 多窗口跳转
  • nuxt 学习笔记
  • Python编程自动化办公案例(1)
  • 一站式 Elasticsearch 集群指标监控与运维管控平台
  • C# 调用Python
  • 51单片机最强模块化封装(3)
  • 【CSS 布局】水平垂直居中
  • 【C++】类和对象--类的6个默认成员函数
  • 常见面试题---------如何处理MQ消息丢失的问题?
  • 十四、Linux网络:高级IO
  • 带你走进API安全的知识海洋
  • 【Java】TCP的三次握手和四次挥手
  • JUC并发编程
  • 概率统计·假设检验【正态总体均值的假设检验、正态总体方差的假设检验】
  • 如何预测机组设备健康状态?你可能需要这套解决方案
  • C++类和对象:面向对象编程的核心。| 面向对象还编什么程啊,活该你是单身狗。
  • CUDA虚拟内存管理
  • 线程池小结
  • vue3状态管理模式 Pinia
  • python基于django的自媒体社区交流平台
  • Python中类和对象(2)
  • SpringMvc入门