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

LeetCode刷题系列 -- 525. 连续数组

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

示例 1:

输入: nums = [0,1]

输出: 2

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

示例 2:

输入: nums = [0,1,0]

输出: 2

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

提示:

  • 1 <= nums.length <= 105

  • nums[i] 不是 0 就是 1

525. 连续数组 - 力扣(Leetcode)

思路

题目可以理解为 求一个子数组,其中 0 与 1 的个数相等。这里我们考虑用一下前缀和。
不知道怎么用前缀和的方式?
来个乾坤大挪移。。。
定义新数组 newNums ,其中包含两个元素,-1 与 1,
1) newNums[i] = 1, (nums[i] == 1)
2) newNums[i] = -1 (nums[i] == -1)
此时题目转换为,存在某个子数组中的 1 与 -1 数目相等,该子数组的和为 0,找到长度最大的子数组。
剩下的思路就与 (1条消息) LeetCode刷题系列 -- 523. 连续的子数组和_在河之洲木水的博客-CSDN博客 是一致的

c++

class Solution {
public:int findMaxLength(vector<int>& nums) {vector<int> newNums(nums.size(), 0);for(int i=0; i<nums.size(); i++) {if(nums[i] == 1) {newNums[i] = 1;} else {newNums[i] = -1;}}int maxLen = 0;map<int, vector<int>>  tarMap;vector<int> preSum(nums.size(), 0); // 前缀和 preSum[i] = nums[0] + ... + nums[i]for(int i=0; i<newNums.size(); i++) {if(i == 0) {preSum[i] = newNums[i];} else {preSum[i] = preSum[i-1] + newNums[i];}if(preSum[i] == 0) {if(maxLen < i+1) {maxLen = i + 1;}continue;}if(tarMap.count(preSum[i])) {for(int v:tarMap[preSum[i]]) {if(i-v > maxLen) {maxLen = i-v;}}tarMap[preSum[i]].push_back(i);} else {vector<int> vec;vec.push_back(i);tarMap[preSum[i]] = vec;     }}return maxLen;}
};

相关文章:

LeetCode刷题系列 -- 525. 连续数组

给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。示例 1:输入: nums [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数…...

JavaEE15-Spring Boot统一功能处理

目录 1.统一用户登录权限效验 1.1.最初用户登录验证 1.2.Spring AOP用户统一登录验证的问题 1.3.Spring拦截器 1.3.1.创建自定义拦截器&#xff0c;实现 HandlerInterceptor 接口并重写 preHandle&#xff08;执行具体方法之前的预处理&#xff09;方法 1.3.2.将自定义拦…...

centos7.6 设置防火墙

1、查看系统版本 cat /etc/redhat-release2、查看防火墙运行状态 systemctl status firewalld这里可以看到当前是未运行状态(inactive)。 3、关闭开机自启动防火墙 systemctl disable firewalld.service4、启动防火墙并查看状态&#xff0c;系统默认 22 端口是开启的。 sy…...

在线支付系列【22】微信支付实战篇之集成服务商API

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言1. 环境搭建2. 特约商户进件3. 统一下单总结前言 在上篇文档中&#xff0c;我们做好了接入前准备工作&#xff0c;接下来使用开源框架集成服务商相关API。 一个简单的支付系统完成支付流程…...

3.2 埃尔米特转置

定义 对于复矩阵&#xff0c;转置又不一样&#xff0c;常见的操作是共轭转置&#xff0c;也叫埃尔米特转置Hermitian transpose。埃尔米特转置就是对矩阵先共轭&#xff0c;再转置&#xff0c;一般来说用三种符号表示埃尔米特转置&#xff1a; 第一种符号是AHA^HAH&#xff0c…...

Python爬虫之Scrapy框架系列(13)——实战ZH小说爬取数据入MySql数据库

目录&#xff1a;1 数据持久化存储&#xff0c;写入Mysql数据库①定义结构化字段&#xff1a;②重新编写爬虫文件&#xff1a;③编写管道文件&#xff1a;④辅助配置&#xff08;修改settings.py文件&#xff09;&#xff1a;⑤navicat创库建表&#xff1a;⑥ 效果如下&#xf…...

MySQL篇02-三大范式,多表查询

数据入库时,由于数据设计不合理&#xff0c;会存在数据重复、更新插入异常等情况, 故数据库中表的设计遵循的设计规范&#xff1a;三大范式1.第一范式(1NF)要求数据库的每一列都是不可分割的原子数据项&#xff0c;即原子性。强调的是列的原子性&#xff0c;即数据库中每一列的…...

vue-cli3创建Vue项目

文章目录前言一、使用vue-cli3创建项目1.检查当前vue的版本2.下载并安装Vue-cli33.使用命令行创建项目二、关于配置前言 本文讲解了如何使用vue-cli3创建属于自己的Vue项目&#xff0c;如果本文对你有所帮助请三连支持博主&#xff0c;你的支持是我更新的动力。 下面案例可供…...

Linux perf probe 的使用(三)

文章目录前言一、Dynamic Tracing二、kprobes2.1 perf kprobe 的使用2.2 kprobe Arguments3.3 tcp_sendmsg()3.3.1 Kernel: tcp_sendmsg()3.3.2 Kernel: tcp_sendmsg() with size3.3.2 Kernel: tcp_sendmsg() line number and local variable三、uprobes的使用3.1 perf uprobe …...

python GUI编程 多窗口跳转

# 多窗口跳转例子from tkinter import *def main(): # 主窗体def goto(num):root.destroy() # 关闭主窗体if num 1:one() # 进入第1个窗体elif num 2:two() # 进入第2个窗体root Tk()root.geometry(300x150600200)root.title(登录窗口)but1 Button(root, text"进入…...

nuxt 学习笔记

这里写目录标题路由跳转NuxtLinkquery参数params参数嵌套路由tab切换效果layouts 文件夹强制约定放置所有布局文件&#xff0c;并以插槽的形式作用在页面中1.在app.vue里面2.component 组件使用Vue < component :is"">Vuex生命周期数据请求useFetchuseAsyncDat…...

Python编程自动化办公案例(1)

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.使用库讲解 1.xlrd 2.xlwt 二.主要案例 1.批量合并 模板如下&#xf…...

一站式 Elasticsearch 集群指标监控与运维管控平台

上篇文章写了一下消息运维管理平台&#xff0c;今天带来的是ES的监控和运维平台。目前初创企业&#xff0c;不像大型互联网公司&#xff0c;可以重复的造轮子。前期还是快速迭代试错阶段&#xff0c;方便拿到市场反馈&#xff0c;及时调整自己的战略和产品方向。让自己活下去&a…...

C# 调用Python

一、简介 IronPython 是一种在 NET 和 Mono 上实现的 Python 语言&#xff0c;由 Jim Hugunin&#xff08;同时也是 Jython 创造者&#xff09;所创造。 Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python是…...

51单片机最强模块化封装(3)

文章目录 前言一、创建smg文件,添加smg文件路径二、smg文件编写三、模块化测试总结前言 本篇文章将带大家继续封装我们的代码。 这里我们会封装数码管的操作函数。 一、创建smg文件,添加smg文件路径 这里的操作就不过多解释了,大家自行看前面的文章即可。 51单片机模块化…...

【CSS 布局】水平垂直居中

CSS 布局-水平垂直居中 一、水平居中 创建一个父盒子&#xff0c;和子盒子 <div class"parent"><div class"child"></div> </div>基本样式如下 .parent {background-color: #fff; }.child {background-color: #999;width: 100p…...

【C++】类和对象--类的6个默认成员函数

目录1.类的6个默认成员函数2.构造函数2.1概念2.2特性3.析构函数3.1概念3.2特性4.拷贝构造函数4.1概念4.2特征5.赋值运算符重载5.1运算符重载5.2赋值运算符重载5.3前置和后置重载5.4流插入和流提取运算符重载6.const成员7.取地址重载和const取地址操作符重载1.类的6个默认成员函…...

常见面试题---------如何处理MQ消息丢失的问题?

如何处理MQ消息丢失的问题? RabbitMQ丢失消息分为如下几种情况&#xff1a; 生产者丢消息&#xff1a; 生产者将数据发送到RabbitMQ的时候&#xff0c;可能在传输过程中因为网络等问题而将数据弄丢了。 RabbitMQ自己丢消息&#xff1a; 如果没有开启RabbitMQ的持久化&#x…...

十四、Linux网络:高级IO

目录 五种IO模型 同步IO 阻塞IO 非阻塞IO 信号驱动IO IO多路转接 异步IO...

带你走进API安全的知识海洋

Part1什么是API API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的接口&#xff08;如函数、HTTP接口&#xff09;&#xff0c;或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访…...

Apache Sedona 使用教程

Apache Sedona 使用教程 项目介绍 Apache Sedona 是一个用于大规模空间数据处理的分布式计算系统。它基于 Apache Spark&#xff0c;提供了高效的空间数据处理能力&#xff0c;支持多种空间数据类型和操作。Sedona 旨在为大数据环境下的地理空间分析提供强大的支持&#xff0c;…...

HelloWorld.h:嵌入式LED硬件抽象库设计与实战

1. 项目概述led是一个极简但高度工程化的嵌入式LED控制抽象库&#xff0c;其核心载体为单头文件HelloWorld.h。尽管项目名称朴素、文档极度精简&#xff08;Readme为空&#xff09;&#xff0c;但该命名本身即构成一种嵌入式开发领域的隐喻性宣言——它并非教学示例的代名词&am…...

终极对比指南:Autoenv vs 其他环境管理工具,如何选择最适合你的目录环境自动化方案

终极对比指南&#xff1a;Autoenv vs 其他环境管理工具&#xff0c;如何选择最适合你的目录环境自动化方案 【免费下载链接】autoenv Directory-based environments. 项目地址: https://gitcode.com/gh_mirrors/au/autoenv Autoenv是一款强大的目录环境自动化工具&#…...

戴尔Precision Pro商务笔记本回归,新一代产品聚焦便携性

看起来2026年是戴尔按下重启键的一年——在消费者和商用产品线中&#xff0c;戏剧性的品牌重塑都在被回归。有时候&#xff0c;老品牌确实是好品牌&#xff1a;熟悉的XPS名称和设计今年回归是有原因的&#xff0c;绝对不是因为戴尔Premium有正面的品牌认知度。在戴尔商务产品方…...

ESFT-gate-law-lite:法律文本智能分析新工具

ESFT-gate-law-lite&#xff1a;法律文本智能分析新工具 【免费下载链接】ESFT-gate-law-lite ESFT-gate-law-lite是基于HuggingFace的深度学习模型&#xff0c;专为法律领域定制。源自deepseek-ai团队&#xff0c;继承ESFT-vanilla-lite优势&#xff0c;强大而轻量&#xff0c…...

MVC / MVVM 和 Vue3、React18 到底啥关系?

MVC / MVVM 和 Vue3、React18 到底啥关系&#xff1f; 我用最直白、最贴合你日常写代码的方式讲清楚&#xff0c;保证你瞬间通透。一、先给结论&#xff08;最重要&#xff09; Vue3 标准的 MVVM 框架&#xff08;官方自己定义的&#xff09;React18 借鉴 MVVM 思想&#xff…...

后端架构师转型AI智能体架构师:3个月实战路径,收藏这份落地指南

如果你本身就是后端/全栈/架构师出身&#xff0c;这意味着你已经有了一套非常扎实的“确定性系统”的构建能力——分布式、高并发、数据库事务、系统稳定性&#xff0c;这些都是你的底牌。 而AI智能体恰恰是“不确定性系统”&#xff08;大模型&#xff09;与“确定性系统”&am…...

企业级React UI组件库实战指南:Element React深度解析与最佳实践

企业级React UI组件库实战指南&#xff1a;Element React深度解析与最佳实践 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react Element React作为一款专业的企业级React UI组件库&#xff0c;为现代前端开发提供了…...

红外遥控技术原理与实现方案详解

红外遥控技术原理与实现方案1. 红外遥控技术概述红外遥控技术是一种利用红外光波进行短距离无线通信的技术方案&#xff0c;主要应用于家电控制领域。该技术通过调制红外光波来传输控制信号&#xff0c;具有成本低、实现简单、抗干扰能力强等特点。1.1 技术特点与应用场景红外遥…...

浪潮服务器硬盘红灯报警?手把手教你更换RAID阵列故障盘(附同步失败解决方案)

浪潮服务器硬盘红灯报警全流程处置指南&#xff1a;从故障诊断到阵列重建 当浪潮服务器的硬盘指示灯突然亮起刺眼的红色&#xff0c;大多数运维人员的第一反应往往是心头一紧。这种视觉警报不仅意味着硬件故障&#xff0c;更可能预示着数据丢失的风险。不同于普通PC的硬盘故障…...