左神 进阶班 - 子数组、子串问题的统一解法(子数组为aim的最大长度)

动态规划总结:子序列,子数组(子串) 子序列和子数组: dp[i][j]更新: case1:判断两个字符是否相等: 如果输入只有一个串,这两个字符就是一个串里取得,比如最长回文子串516。 如果输入两个串,这两个字符就是两个字符串取得,比如1143最长公共子序列。 方程一般是 if (s1.charAt(i) == s2.charAt(j)) dp[i][j] = dp[i - 1][j - 1] + x; 输入只有一个串的时候,s1就是s2; x可以是0,1,2这种,比如问的 阅读详情

该方法 的统一解法为:

计算每个位置结尾的情况下所求出的答案,然后总的答案必在其中。

 

#include<iostream>
#include<unordered_map>
#include<algorithm>
using namespace std;
int getMaxLen(int arr[], int aim, int length){
	if(length == 0)
		return 0;
	unordered_map<int,int> map;
	map[0] = -1;
	// map.insert(make_pair(0,-1));
	int sum =0;
	int len =0;
	for(int i=0;i<length;i++){
		sum += arr[i];
		//如果 当前位置的值能累加出 aim ,则 看 是否更新 len
		if(map.find(sum-aim) != map.end()){
			len = max(i - map.find(sum-aim)->second, len);
		}
		//如果 map中还没有出现过 sum, 则把 sum - poi 放入map中
		if(map.find(sum) == map.end()){
			map[sum] = i;	
		}
	}
	return len;
}
int main(){
	int n,aim;
	cin >> n >> aim;
	int* arr = new int[n];
	for(int i=0;i<n;i++){
		cin >> arr[i];
	}
	cout << getMaxLen(arr, aim, n);

	return 0;
}

 

引申问题:

求一 数组中,奇数和偶数相同的最大长度,     把奇数改为1 ,偶数改为-1.aim设为0,套用。

Unity游戏发布前必做:用Obfuscator Pro混淆代码防破解的完整配置流程(含JSON序列化避坑) 本文详细介绍了Unity游戏发布前使用Obfuscator Pro进行代码混淆的完整配置流程,包括环境准备、关键组件保护策略、高级安全加固技巧以及测试与调试方案。特别针对JSON序列化、协程调用等常见问题提供了解决方案,帮助开发者有效防止游戏被破解和反编译,保护智力成果。 阅读详情

相关推荐

最大子串和问题(Maximum Subarray)

又一个经典问题,对于一个包含负值的数字串array[1...n],要找到他的一个子串array[i...j](0 这里我们需要注意子串和子序列之间的区别。子串是指数组中连续的若干个元素,而子序列只要求各元素的顺序与其在数组中一致,而没有连续的要求。对于一个元素数为n的数组,其含

joylnwang的专栏 3万+

数组中的子数组、子序列,以及字符串的子串、子序列解释

数组中的子数组、子序列,以及字符串的子串、子序列解释数组子数组子序列字符串子串子序列 数组 子数组 子数组的定义:一个或连续多个数组中的元素组成一个子数组(子数组最少包含一个元素) 子序列 子序列的定义:子序列就是在原来序列中找出一部分组成的序列(子序列不一定连续) 在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列。 例如:数组:[1,2,3,4,5,6] ;其中一个子序列可为[2,3,6] 字符串 子串 子串定义:字符串中任意个连续的字符组成

chl183的博客 2万+

基于Java17、SpringBoot、vue3、antdv-next、uniapp等主流技术构建的全场景极速开发平台 MDP内置3个web端、1个移动端 重点解决用户中心、开发者平台、管理后台3个应

MDP-主数据平台,后端项目。专注于单点登录解决方案。内置用户中心、开发者平台、管理后台3个应用。包含:单点登录、Oauth2 登录、用户身份管理、应用申请、应用接入、主数据维护、主数据订阅、主数据广播、应用接口调用、接口管理管理和查看、系统配置等功能。

【算法专题】动态规划之子数组和子串系列

算法专题之动态规划 - - - 子数组、子串系列(数组中连续的一段)

YoungMLet的博客 1926

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?

usb 扩容盘检测修复工具源码,编译产物

usb 扩容盘检测修复工具源码,编译产物

数组的子数组(亚阵列)、子序列,字符串的子串、子序列

子数组(亚阵列)或子串总是连续的,但子序列不一定是连续的。那是,子序列不需要在原始序列中占据连续位置。但是我们可以说连续子序列和亚阵列都是一样的。子序列是子串的泛化,或者子串是子序列的细化。例如,是一个子序列,但不是子字符串,并且既是亚阵列又是子序列。

qq_63514555的博客 1468

融合UWB和IMU割草机定位EKF研究(Matlab代码实现)

内容概要:本文主要介绍了一个名为“Plecs全桥LLC谐振变换器仿真模型”的技术资源,该资源聚焦于电力电子领域中的LLC谐振变换器建模与仿真,涵盖开环、闭环控制、软启动设计及参数优化等核心内容。文档不仅提供了LLC变换器的详细建模方法与仿真案例,还系统梳理了其在高效电源转换系统中的应用,包括隔离型全桥拓扑结构的设计与性能分析。此外,资源汇总了大量Matlab/Simulink仿真模型及相关科研方向,涉及新能源并网、储能控制、电机驱动等多个前沿领域,全面展示LLC谐振变换器在现代电力系统中的关键技术实现路径。同时,文档附带多种学习资料获取途径,如网盘链接和公众号资源,便于研究人员深入实践与拓展研究。; 适合人群:具备扎实的电力电子、自动控制理论基础,从事新能源发电、开关电源设计、电力系统仿真等相关领域的研究生、工程师及科研人员。; 使用场景及目标:①深入理解LLC谐振变换器的工作原理、建模方法与控制策略;②开展电力电子变换器的仿真验证与参数优化设计;③支撑科研项目、学位论文或工程项目的系统仿真与方案验证; 阅读建议:建议结合所提供的仿真模型与参考文献,使用Plecs或Simulink软件进行动手实践,重点掌握LLC谐振变换器的建模流程、闭环控制设计、软启动机制及参数调试技巧,以全面提升在实际工程中的应用与创新能力。

子串&子数组问题

1. 累加和等于num的最长子数组的长度(有负数) 注:数组元素可为负数 思路:求子数组问题,就是依次考虑数组中每一位元素之前的数组的情况。 比如说arr = {7,3,2,1,1,7,7},依次考虑数组范围(0-i)中,任意元素开始,以arr[i]结尾的子数组是否符合条件。比如说i=0时,子数组{7}符合条件;i=4时,子数组{3,2,1,1}符合条件。 假设遍历到i位置,数组元素从0加到i的值为sum,只需要求i之前的数组中,是否出现过和为sum-num的情况。例如,arr = {9,8,3,2,1,

GoSantiago的博客 487

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)内容概要:本文主要介绍了基于Plecs的全桥LLC谐振变换器仿真模型,涵盖变频控制下的多相交错LLC谐振变换器闭环仿真、V2G电动汽车ACDC整流与双向CLLC谐振变换器充放电仿真、LLC谐振变换器的开环与闭环软启动设计,以及储能系统中双向Buck-Boost变换器结合模型预测电流控制和电压下垂控制的仿真研究。同时,文档列举了多种电力电子系统与控制策略的Simulink/Plecs仿真案例,涉及三相交错并联Buck变换器、三电平Buck直流变换器、单相Boost PFC电路等,展示了丰富的电力变换器建模与控制技术。此外,还包括参数设计报告、计算书及相关参考文献,适用于从事电力电子、新能源发电、电动汽车充放电系统等领域的研究人员和技术开发人员。; 适合人群:具备电力电子、自动控制理论基础,从事新能源、电动汽车、电力系统等相关领域研究的研发人员、高校研究生及高年级本科生。; 使用场景及目标:① 学习和掌握LLC谐振变换器及其他典型电力电子变换器的工作原理与建模方法;② 实现闭环控制策略如变频控制、软启动、模型预测控制、下垂控制等的仿真验证;③ 支持科研项目、毕业设计或工程开发中的系统仿真与优化设计。; 阅读建议:建议结合文中提供的仿真模型、设计报告与参考文献,逐步搭建并调试相应系统,重点关注控制策略的实现细节与参数整定过程,以深入理解系统动态响应特性与控制性能。

OpenCV+ArUco实战:如何用Python实现高精度二维码测距(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现基于ArUco标签的高精度单目视觉测距。通过相机标定、标签检测和三维位置估算,结合完整代码示例,帮助开发者在机器人导航、工业自动化等场景中实现厘米级距离测量,并探讨了精度优化与三维可视化等进阶应用。

weixin_29052717的博客 478

再谈子数组/子串问题

这类问题都是求一个满足某种条件的连续的段,相对于子序列。字符串和数组的主要区别是,前者因为由字符而不是数值组成,一般不会有最大值,最小值,求和这种问题。对于字符串的子串问题,一般条件是子串符合某种pattern(回文、有序)或者满足某种统计特征(子串内无重复字符,最多重复2次,包含了给定字符集的所有字符,字符个数均等) 子数组问题包含了子串问题,但是可以用子数组的一些数值计算特征值(比如

binling的专栏 781

小白快速上手 labelme:新手图像标注详解教程

本教程旨在帮助初次接触 labelme 的用户快速上手该软件,掌握基本操作与标注流程,为语义分割数据集做准备。

小白一枚~ 2万+

leetcode笔记 -- 子串、 子数组问题

解决子串、子数组问题方法有: 1、滑动窗口 在子串中,使用一个HashMap来表示窗口中每个字符的个数。 无重复字符的最长子串 最小覆盖子串 字符串的排列 找到字符串中所有字母异位词 在数组中,连续子数组就是一个窗口,计算窗口中元素和,例如: 长度最小的子数组 2、数组的前缀和 和为K的子数组 用大区间的前缀和 - 连续子数组的元素和 = 小区间的前缀和 就像一个twoSum问题一样, 使用HashMap存储前缀和,结果就等于map中存在小区间前缀和 的个数。题目: ...

qq_28808697的博客 227

华为无线WiFi实战:基于802.1x与NPS的企业级认证部署指南

本文提供了一份详尽的华为无线WiFi企业级认证部署实战指南。通过整合802.1x协议与Windows NPS服务器,构建基于AD域账号的安全认证体系,彻底解决传统WiFi密码共享带来的安全风险。文章详细拆解了从NPS服务器配置、证书部署到华为AC端RADIUS模板、AAA方案、认证域及VAP模板调用的全流程,并附有终端连接测试与常见故障排查方法,助力企业实现高效、安全的无线网络接入管理。

weixin_29239661的博客 271

MAS1102量产工具实战指南:从下载到开卡,附固件选择与RDT优化技巧

本文提供MAS1102量产工具的实战指南,涵盖从工具下载、短接识别到开卡操作的全过程。重点解析了固件选择策略与RDT优化技巧,帮助用户成功修复基于联芸MAS1102主控的固态硬盘,解决常见开卡错误并提升SSD性能与稳定性。

c2d3e4f的博客 2205

java 求解子数组子字符串的问题合集

问题一:连续子数组的最大和输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求解所有子数组的和的最大值。要求时间是o(n)。思路:动态规划的思想。 用函数f(i)表示第i个数字结尾的子数组的最大和,我们求出最大的f(i)即可。 p[i] i=0或f(i-1)<=0 f(i)=f(i-1)+p[i] i>0且f(i-1)>0

yingzizizizizizzz的专栏 636

【学习笔记】计算机网络 第八章 无线局域网(WLAN)

计算机网络 第八章 无线局域网(WLAN)

Vera_shsf的博客 1243

leetcode 子序列 子数组 子串区别

1 子序列 是不要求连续的 2 子数组和子串一样,是需要连续的 但是无论是子序列和子数组,他们都可以看作是原数组的一部分,而且不会改变原来数组中元素的相对元素。(和一些题目求是否存在数组元素或者数组元素排列区别) 例题:01串找最长的01出现次数相等的子串,通过把‘0’当成-1,‘1’当成1,可以转化为最长的sum为0的子数组问题 这个题目,可以看看 525. 连续数组 325. 和等于 k 的最长子数组长度 比较奇怪的是我最先看到这题是在一个面经里,楼主描述的是子序列,而不是子数组,不知道原

天天开心 2363

【第24例】华为 IPD 体系 | RMT 需求管理团队

RMT需求管理团队

产品线负责人 1766

YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 7441

所有奇数长度子数组的和

给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。 子数组 定义为原数组中的一个连续子序列。 请你返回 arr 中 所有奇数长度子数组的和 。 示例 1: 输入:arr = [1,4,2,5,3] 输出:58 解释:所有奇数长度子数组和它们的和为: [1] = 1 [4] = 4 [2] = 2 [5] = 5 [3] = 3 [1,4,2] = 7 [4,2,5] = 11 [2,5,3] = 10 [1,4,2,5,3] = 15 我们将所有值求和得到 1 + 4 + 2 + 5 +

weixin_50811583的博客 501

Oracle 查看 rman 备份情况 SQL 语句

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 3119

子数组子串问题

最长上升子序列 给定一个无序的整数数组,找到其中最长上升子序列的长度。

Starry__的博客 537

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

子串、子数组与子序列类型问题的动态规划求解(Leetcode题解-Python语言)

一般来说,子串和子数组都是连续的,而子序列是可以不连续的,遇到子序列问题基本上都是用动态规划求解。 53. 最大子数组和(剑指 Offer 42. 连续子数组的最大和) class Solution: def maxSubArray(self, nums: List[int]) -> int: n = len(nums) dp = [-10001] * (n+1) dp[0] = nums[0] for i in range(1

自动化研究生在读,此博客记录了我的学习与刷题经验,欢迎大家阅读交流 1101

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Tricks(三十二)—— 遍历全部的子串(子数组)

如果数组或者字符串的长度为 n,则全部子串(子数组)的规模为: n+(n−1)+⋯+1=n(n+1)2 n+(n-1)+\cdots+1=\frac{n(n+1)}2 for (size_t i = 0; i < n; ++i) { for (size_t j = i+1; j < n; ++j) ... }外层循环表示以其为开始的子数组(或子串),内层表示截止;

2116

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 左神进阶班-最大异或和 的分割 个数
下一篇: leetcode-38
就叫温华啦
博客等级 码龄11年 28粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值