每日OJ题_算法_前缀和⑦_力扣525. 连续数组

目录

力扣525. 连续数组

解析代码


力扣525. 连续数组

525. 连续数组

难度 中等

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

示例 1:

输入: nums = [0,1]
输出: 2
说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。

示例 2:

输入: nums = [0,1,0]
输出: 2
说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。

提示:

  • 1 <= nums.length <= 10^5
  • nums[i] 不是 0 就是 1
class Solution {
public:int findMaxLength(vector<int>& nums) {}
};

解析代码

把数组的0变成/当成-1之后,就转化成力扣560. 和为 K 的子数组了(此时K=0)。

​
class Solution {
public:int findMaxLength(vector<int>& nums) {// 转化成找一段和为0的最长子数组 -> 把数组的0变成/当成-1int sum = 0, n = nums.size(), ret = 0;unordered_map<int, int> hash(n); // 左存前缀和,右存下标hash[0] = -1; // 默认有一个前缀和为0的情况,下标为-1,如[0,1]返回就是1 - (-1) = 2for(int i = 0; i < n; ++i){sum += nums[i] == 0 ? -1 : 1;if(hash.count(sum)) // 找最左面有没有前缀和和此时一样的{ret = max(ret, i - hash[sum]); // 找到前面出现一样的,则那个位置到现在的位置和为0}else // 前面没有一样的才更新,保证最左边{hash[sum] = i; }}return ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

只有一台显示器,如何实现同时显示4台主机的HDMI信号?

HDMI画面分割器概述 HDMI画面分割器属于画面分割器中的一种&#xff0c;因为其信号接口是HDMI接口而得其名&#xff0c;多用于监控、多媒体、视频会议等常见的场景 HDMI画面分割器-图 HDMI画面分割器工作原理 使用硬件方式将多路HDMI信号以多种不同的模式分割显示在同一个显示…

Delphi常用的4种过程函数传递参数的方式

在Delphi中&#xff0c;有多种方式可以传递参数给过程或函数。以下是其中几种常用的方式&#xff1a; 1. 值传递&#xff08;By Value&#xff09;&#xff1a;将参数的值复制给过程或函数的形参。在过程或函数中对形参的修改不会影响实参的值。 procedure MyProc(a: Integer…

java集合面试题:说说 List,Set,Map 三者的区别?三者底层的数据结构?

List、Set和Map是Java集合框架中的三个常用接口&#xff0c;它们有以下区别&#xff1a; List&#xff1a; List是有序的集合&#xff0c;允许重复元素。可以通过索引访问元素&#xff0c;支持按照元素的插入顺序进行遍历。常见的实现类有ArrayList和LinkedList。底层数据结构…

香蕉派BPI-M7 瑞芯微RK3588 人工智能开源硬件开发板公开发售

香蕉派(Banana Pi) BPI-M7瑞芯微K3588开源硬件单板计算机公开销售&#xff0c;支持WiFi 6和BT5.2&#xff0c;硬件有3个版本:8G Ram64G eMMC, 16G Ram128 eMMC和32G Ram128 eMMC 香蕉派BPI-M7采用睿芯最新旗舰RK3588八核64位处理器&#xff0c;最高频率为2.4GHz, 6 TOPS NPU&…

谷歌把GenAI装进Chrome

谷歌不甘示弱&#xff0c;在其Chrome浏览器中引入了新的实验性生成式AI功能&#xff0c;以简化并为用户提供更高效的浏览体验。 值得注意的是&#xff0c;微软去年推出了Edge浏览器和人工智能驱动的必应搜索引擎的集成。随着Chrome M121版本的发布&#xff0c;谷歌打算利用最新…

unaipp微信小程序-跳转switchTab bug

bug wx.switchTab: url 不支持 queryString 解决 uni.setStorageSync("selectedLabel", selectedLabel) uni.getStorageSync("selectedLabel") 跳转到tabar导航栏&#xff0c;switchTab不能携带参数&#xff0c;我使用的是setStorageSync 储存&#x…

2024年美赛赛前复习大纲

CC数模-优质解答 引言 数学建模是一个将数学理论和方法应用于解决现实世界问题的过程。在数学建模比赛中&#xff0c;学生需要运用自己的数学知识和技能&#xff0c;解决给定的复杂问题。这不仅是一次展示自己能力的机会&#xff0c;也是一次学习和成长的过程。随着比赛的临近…

linux临时用户

linux临时用户 在 Linux 系统中&#xff0c;你可以创建一个临时用户&#xff0c;这个用户在一段时间后会自动删除。然而&#xff0c;这通常需要一些额外的配置&#xff0c;并且不是所有的 Linux 发行版都直接支持这个功能。 如果你只是想要一个只在当前会话中存在的用户&…

Wheeltec小车的开发实录(2)

小车初步启动控制 小车终端运行l: roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch 控制终端运行&#xff08;多机通讯设置后&#xff0c;可以不必执行这一步&#xff09; export ROS_HOSTNAME192.168.224.122&#xff08;控制终端ip&#xff09;export R…

【Tomcat与网络8】从源码看Tomcat的层次结构

在前面我们介绍了如何通过源码来启动Tomcat&#xff0c;本文我们就来看一下Tomcat是如何一步步启动的&#xff0c;以及在启动过程中&#xff0c;不同的组件是如何加载的。 一般&#xff0c;我们可以通过 Tomcat 的 /bin 目录下的脚本 startup.sh 来启动 Tomcat&#xff0c;如果…

【HarmonyOS应用开发】UIAbility实践第二部分(六)

内容接上篇 【HarmonyOS应用开发】UIAbility实践第一部分&#xff08;五&#xff09; 末尾含示例源码 三、UIAbility的生命周期 当用户浏览、切换和返回到对应应用的时候&#xff0c;应用中的UIAbility实例会在其生命周期的不同状态之间转换。 UIAbility类提供了很多回调&a…

关于字符串处理

文章目录 关于字符串处理1、取字符串的长度2、跳过前面的字符3、取字符串右边的字符4、掐头去尾5、取倒数的范围6、删左留右7、删右留左8、查找替换9、大小写转换 关于字符串处理 1、取字符串的长度 [rootlocalhost ~]#strabcd1128 #定义变量 [rootlocalhost ~]#echo ${#str}…

IEEE| IceNet《IceNet for Interactive Contrast Enhancement》论文超详细解读(翻译+精读)

学习资料&#xff1a; 论文题目&#xff1a;《IceNet for Interactive Contrast Enhancement》&#xff08;用于交互式对比度增强的IceNet&#xff09;原文地址&#xff1a;export.arxiv.org/pdf/2109.05838v2.pdf 目录 ABSTRACT—摘要 翻译 精读 I. INTRODUCTION—简介 翻…

Android 14 修改安兔兔等三方工具显示的屏幕尺寸

常见修改方式 1.根据规格书配置 lcd 物理宽高,一般会有小数位客户不接受。 2.在 frameworks/base/core/java/android/widget/TextView.java 这个类里根据app包名去替换对应字符串,app多这样修改比较繁琐,而且多多少少会影响性能。 有更好处理方式? 首先我们要知道安兔兔…

通俗易懂三大范式

通俗易懂三大范式 第一范式说的是每个字段不可再分 第二范式说的是不能存在部分依赖&#xff08;不能由联合主键的部分就可以推出其他字段&#xff0c;必须整个联合主键才能推出其他字段&#xff09; 第三范式说的是不能存在间接依赖(A&#xff08;主键&#xff09;→B,B→C…

瑞_23种设计模式_工厂模式

文章目录 1 什么是工厂模式案例案例代码 2 简单工厂模式&#xff08;Simple Factory&#xff09;2.1 简单工厂模式的结构2.2 案例改进——简单工厂模式2.3 案例改进代码实现2.4 简单工厂模式优缺点2.5 拓展——静态工厂 3 工厂方法模式&#xff08;Factory Method&#xff09;★…

【零基础学习CAPL】——CAN报文的发送(按下按钮同时周期性发送)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建3.系统变量创建4.CAPL实现4.1.函数展示4.2.全量报文展示5.效果1.概述 本章主要介绍使用CAPL和Panel在按下按钮时发送周期性CAN报文。 本章主要在“【零基础学习CAPL】——CAN报文的发送(配合P…

数组与字符串深度巩固

经过再三思考觉得今天就写一篇关于数组与字符串相关的文章吧&#xff01;其中字符串主要通过练习来巩固知识亦或是获得新知识。好接下来将进行我们的学习时刻了。 首先我们来思考一个问题&#xff0c;你真的了解数组的数组名吗&#xff1f;数组名真的就单单一个名字而已吗&…

父页面跨域获取iframe页面的值

跨域访问是指在一个域名的页面尝试访问另一个域名的资源。出于安全的考虑&#xff0c;浏览器实现了同源策略&#xff08;same-origin policy&#xff09;。这意味着&#xff0c;如果两个页面的协议、域名或端口有任何一个不相同&#xff0c;它们就不能直接访问对方的内容。但是…

Mac安装配置JDK

Mac安装配置jdk 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8 下载jdk1.8及以上需要Oracle账号及密码 dokidoki811163.com\pass:Zywxmxbt1314… 安装jdk 双击安装包&#xff0c;点击.pkg&#xff0c;按照提示安装&#xff0c;配置环境之前…