news 2026/9/2 21:10:30

连续数组(哈希+前缀和)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
连续数组(哈希+前缀和)

这道题可以利用前缀和 + 哈希表来解决。

1.将 0 视为 -1

题目要求找“0 和 1 数目相等”的最长子数组。
如果把数组中的0当作-1,那就等价于:

找到一个子数组,使得这个子数组的元素和为 0。

2.使用哈希表记录前缀和第一次出现的位置

prefixSum为从数组开始到当前的前缀和。

unordered_map<int, int> index存储:

<前缀和,第一次出现的下标>

为什么存第一次出现的位置?
因为前缀和越早出现,后续遇到相同前缀和时形成的子数组就越长。

3.遍历数组时更新前缀和

扫描数组:

  • 遇到1:prefixSum += 1

  • 遇到0:prefixSum -= 1

每一步都检查:

如果当前前缀和 prefixSum 曾经出现过:

说明:

两次出现 prefixSum 之间的子数组和为 0
→ 0 和 1 的数量相等

于是可以计算当前长度并更新答案。

如果此前没有出现过 prefixSum:

记录当前下标(只记录第一次出现的位置)。

4.初始化 index[0] = -1

为了处理从下标0开始就满足条件的情况。

通过将 0 当作 -1,我们把问题转化为寻找“和为 0 的最长子数组”。
使用哈希表记录每个前缀和第一次出现的位置。当同一个前缀和再次出现时,说明中间的子数组和为 0,即 0 和 1 数量相等,从而可以更新最大长度。

class Solution { public: int findMaxLength(vector<int>& nums) { int cnt=0; unordered_map<int,int> index; index[cnt]=-1; int maxLen=0; for(int i=0;i<nums.size();i++){ if(nums[i]==1) cnt++; else cnt--; if(index.count(cnt)){ int curLen=i-index[cnt]; maxLen=maxLen>curLen?maxLen:curLen; } else index[cnt]=i; } return maxLen; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 5:10:43

发烧上考场仍上岸!26考研er请下这份心态急救包

一恍惚&#xff0c;研究生生涯已余额不足&#xff0c;而26考研的同学们本周末就要踏上初试战场 记得22年考研初试时&#xff0c;我考前突发高烧&#xff0c;但最终成功考入NNU GIS专业。现在回想&#xff0c;走进考场的那一刻&#xff0c;其实你已经战胜了一半的对手。以下是我…

作者头像 李华
网站建设 2026/9/2 1:37:11

电脑启动太慢怎么解决?2025年Windows系统深度性能优化与电脑加速全攻略

面对高配电脑却遭遇 “电脑启动太慢怎么解决” 的性能玄学&#xff0c;很多技术爱好者的第一反应是修改注册表或禁用系统服务。虽然这种硬核操作能挤出一点性能&#xff0c;但往往伴随着系统不稳定的风险。其实&#xff0c;在2025年&#xff0c;实现高效 电脑加速 的最优解并非…

作者头像 李华
网站建设 2026/9/2 2:10:10

美业美容小程序有哪些软件?深度解析常见类型与选择要点!

在数字化浪潮席卷各行各业的今天&#xff0c;美业美容行业也迎来了转型升级的关键时期。传统的手工预约登记、纸质会员卡、线下推广等方式已难以满足现代消费者对便捷、高效、个性化服务的需求。美容小程序作为连接商家与客户的重要工具&#xff0c;正逐渐成为美业门店提升运营…

作者头像 李华
网站建设 2026/9/2 22:10:14

论文发表信息笔记

A Rotationally Equivariant Attention Framework for Integrated Inshore Ship Detection and Fine-Grained Classification [JSTARS] CCF未收录

作者头像 李华
网站建设 2026/9/2 20:39:45

25、深入理解 Pthreads 线程库

深入理解 Pthreads 线程库 1. 线程同步规则与 Pthreads 概述 在多线程编程中,为避免死锁等问题,需要明确的同步规则。例如,必须始终先获取互斥锁 A,再获取互斥锁 B。随着程序复杂度和同步需求的增加,执行这些规则会变得更加困难,因此要尽早开始并进行清晰的设计。 Lin…

作者头像 李华
网站建设 2026/9/3 5:10:57

Remote ssh无法连接?

1、检查ssh配置 sudo nano etc/ssh/sshd_config确保配置 # 登录与认证 PermitRootLogin no # 推荐 no&#xff08;VS Code 不需要 root&#xff09; PasswordAuthentication yes # yes&#xff08;密码登陆&#xff09; PubkeyAuthentication yes # 推荐同时…

作者头像 李华