连续数组问题

server/2024/9/22 15:41:22/

目录

一·题目:

二·思路:

三·代码:


一·题目:

leetcode链接:. - 力扣(LeetCode) 

二·思路:

思路:前缀和(第二种)+化0为-1+hash:

这样可以把原题中的求子数组内零,1个数相同的最长子数组长度 转为 把0改为-1,即和为零的最长子数组长度:->这样就是前缀和为sum的最最短子数组,也就是让hash表

内key存每次遍历的sum也就是前缀和,而value存它前缀和位置的下标,这样如果遍历到某个i的位置发现此区间内存在目标,则此时该区间和为sum,目标区间为0

故一定存在前缀和为sum,故往hash去找key,发现后得到它的下标进行:i-hash[sum](长度注意);

当然这里还存在两个小细节问题:1.【-1,1】->这时符合题意但是sum此刻等于0,然而hash【0】没有初始化,因此让它ret等于2,故初始化为-1.

                                                 2.每次sum都要储存吗?当然不是:如果每次都存进去,假设上一次是刚比较出ret,那么此刻sum和某个位置前缀和相等,如果存进去则hash内对应下标是sum的值就会变大,也就是原数组下标变大,这时如果后面连着有出现为0的区间此时,ret跟新的就是后面那个小的区间,而真正的最长区间应该是这两个合一起,故只要比较了max那么就不能再次跟新此时的下标了

三·代码:

class Solution {
public:int findMaxLength(vector<int>& nums) {int ret=0,sum=0;unordered_map<int,int>hash;hash[0]=-1;for(int i=0;i<nums.size();i++){nums[i]=nums[i]==1?1:-1;//化0为-1;sum+=nums[i];if(hash.count(sum)) ret=max(ret,i-hash[sum]);else hash[sum]=i;}return ret;}
};


http://www.ppmy.cn/server/120338.html

相关文章

xinetd服务使用方法及案例

xinetd&#xff08;Extended Internet Services Daemon&#xff09;是一个网络服务守护进程&#xff0c;用于管理和控制多个网络服务的启动与停止。它的主要特点包括&#xff1a; 配置Telnet服务的xinetd文件案例 1. 文件位置&#xff1a;在 /etc/xinetd.d/ 目录下创建一个名…

远程连接MySQL并操作

配置MySQL开发环境 如果你使用的是基于Debian的系统&#xff08;如Ubuntu&#xff09;&#xff0c;可以在终端通过如下步骤安装MySQL开发包。 更新软件包列表 运行以下命令以确保你拥有最新的软件包列表。 sudo apt-get update安装libmysqlclient-dev开发包 执行以下命令以…

【开源免费】基于SpringBoot+Vue.JS教师工作量管理系统(JAVA毕业设计)

本文项目编号 T 043 &#xff0c;文末自助获取源码 \color{red}{T043&#xff0c;文末自助获取源码} T043&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Oracle SQL Developer:数据库开发与数据管理的利器

在数据库管理和开发领域&#xff0c;拥有一个强大而灵活的工具是至关重要的。Oracle SQL Developer 是 Oracle 公司提供的一个免费集成开发环境&#xff0c;它专为数据库开发、管理和数据建模而设计。本文将详细介绍 Oracle SQL Developer 的功能、特点以及如何使用它来执行数据…

C++:tinyxml2用于解析、操作和生成XML文件

TinyXML-2 是一个轻量级、简单易用的 C 库&#xff0c;用于解析、操作和生成 XML 文件。与其他 XML 库相比&#xff0c;TinyXML-2 旨在提供简单性和效率&#xff0c;特别适合嵌入式系统、游戏开发或需要快速处理 XML 的场景。它是 TinyXML 的继任者&#xff0c;更加轻量和快速&…

Vue3 Day7-全局组件、指令以及pinia

7.1 全局组件 App.vue <template><div><h2>我是父组件&#xff0c;下面是全局组件的内容</h2><HelloWorld></HelloWorld></div> </template> ​ <script setup> ​ </script> <style scoped></style&g…

大舍传媒:尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展

大舍传媒&#xff1a;尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展 在全球化的浪潮下&#xff0c;媒体作为信息传播的重要渠道&#xff0c;对于促进行业发展和推动社会进步扮演着举足轻重的角色。特别是在非洲大陆上人口最多、经济最发达的国家——尼日利亚&#xff0c;传统…

vue循环渲染动态展示内容案例(“更多”按钮功能)

当我们在网页浏览时&#xff0c;常常会有以下情况&#xff1a;要展示的内容太多&#xff0c;但展示空间有限&#xff0c;比如我们要在页面的一部分空间中展示较多的内容放不下&#xff0c;通常会有两种解决方式&#xff1a;分页&#xff0c;“更多”按钮。 今天我们的案例用于…