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

【前缀合】Leetcode 连续数组

题目解析

525. 连续数组

在这里插入图片描述

寻找一个子数组,这个子数组中包含相同数目的0和1,但是这个子数组需要最长的


算法讲解

在这里插入图片描述
只需在[0,i]寻找一段区间使得这一段区间的和也等于sum即可

细节问题:1. 这里的哈希表的value存的是下标,因为需要找到最长的子数组的长度 2. 遇到重复的<sum ,i>,不用将当前的位置和sum更换进Hash,因为在此时的[0,i]区间里已经寻找到了一段[0,j]区间的和也等于sum,所以左边的长度越小,就能找到结果

class Solution {
public:int findMaxLength(vector<int>& nums) {//将vector中的0 换成 -1//这道题将转化为: 在数组中找出最长子数组,使最长子数组中所有元素和等于0int sum = 0;int ret = 0;unordered_map<int,int>Hash;Hash[0] = -1;for(int i = 0; i < nums.size(); i++){sum += nums[i] == 0 ? -1 : 1;if(Hash.count(sum)){ret = max(ret, i - Hash[sum]);}else Hash[sum] = i;}return ret;}
};

http://www.lryc.cn/news/337001.html

相关文章:

  • 一些优雅的算法(c++)
  • Docker Desktop修改镜像存储路径 Docker Desktop Start ... 卡死
  • 小型企业网络安全指南
  • springboot相关报错解决
  • python 中 from import, __name__, __all__, __init__.py 作用,python的模块和导入包
  • Composer安装与配置详解
  • A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用
  • python如何判断图片为黑白还是彩色
  • C语言进阶课程学习记录-main函数与命令行参数
  • Utilize webcam to capture photo with camera
  • 【uniapp】开发微信小程序 — 注意事项
  • the python tutorial
  • AIoT人工智能物联网之AI 实战
  • Python 大麦抢票脚本
  • 前端开发攻略---用JavaScript打造炫酷数字变化动画效果:手写实现你的自定义动画函数!支持更改任意数字、动画速度
  • 【学习】移动端兼容性测试有什么方法及重要性
  • 记录linux从0部署java项目(宝塔)
  • Python的时间和日期:探索datetime模块
  • 代理与反向代理
  • 长风破浪会有时,直挂云帆济沧海
  • jAavascript基础积累
  • 神经网络训练中batch的作用
  • 【grpc】grpc进阶一,再回首protobuf
  • iframe嵌入Vue页面实现免登方法
  • 详解TCP/IP五层模型
  • 开创加密资产新纪元:深度解析ERC-314协议
  • Rust 实战练习 - 9. 文本编码,URL编码,加密解密
  • linux环境openfile限制
  • python之pandas数据导入和导出
  • Docker 集成 redis,并在nacos进行配置时需要注意点