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

连续数组问题

目录

一·题目:

二·思路:

三·代码:


一·题目:

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;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CSS3 多媒体查询
  • 网关过滤器(Gateway Filter)
  • 【webpack4系列】设计可维护的webpack4.x+vue构建配置(终极篇)
  • 41. 如何在MyBatis-Plus中实现批量操作?批量插入和更新的最佳实践是什么?
  • 解决DockerDesktop启动redis后采用PowerShell终端操作
  • C++初阶-list用法总结
  • 免费在线压缩pdf 压缩pdf在线免费 推荐简单好用
  • 【CTF】Nginx日志注入
  • 【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“
  • WebGL颜色与纹理
  • 【制作100个unity游戏之32】unity开发属于自己的一个2d/3d桌面宠物,可以实时计算已经获取的工资
  • QT快速安装使用指南
  • Linux学习/复习2--Linux工具
  • 解决 npm ERR! node-sass 和 gyp ERR! node-gyp 报错问题
  • 蓝桥杯15届C/C++B组省赛题目
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • exports和module.exports
  • IndexedDB
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • js
  • Koa2 之文件上传下载
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • orm2 中文文档 3.1 模型属性
  • Python中eval与exec的使用及区别
  • scrapy学习之路4(itemloder的使用)
  • spring boot下thymeleaf全局静态变量配置
  • SpringCloud集成分布式事务LCN (一)
  • 阿里研究院入选中国企业智库系统影响力榜
  • 聚簇索引和非聚簇索引
  • 排序(1):冒泡排序
  • 前端
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我建了一个叫Hello World的项目
  • 阿里云ACE认证之理解CDN技术
  • 湖北分布式智能数据采集方法有哪些?
  • 通过调用文摘列表API获取文摘
  • 移动端高清、多屏适配方案
  • ​​​【收录 Hello 算法】9.4 小结
  • ​520就是要宠粉,你的心头书我买单
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (3)选择元素——(17)练习(Exercises)
  • (5)STL算法之复制
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (每日一问)基础知识:堆与栈的区别
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)elasticsearch 源码之启动流程分析
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转) ns2/nam与nam实现相关的文件
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)Unity3DUnity3D在android下调试
  • (转)我也是一只IT小小鸟