JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串!

最多等和不相交连续子序列 已支持Java、JavaScript、Python,考察动态规划,最大不相交区间数量 阅读详情

  在一个字符串中取得连续的子序列,并保证该序列各元素的和,为所有子序列中最大的。

import java.util.Scanner;
//和最大的子串


public class ZichuanQiuhe {
	public static void main(String args[])
	{
		Scanner sc= new Scanner(System.in);
		int tmp = sc.nextInt();
		int temp[] = new int[tmp];        //对相关数列进行录入
		int top = 0,max = 0,begin = 1,last = 1,rebegin = 1;
		for(int i = 0;i<temp.length;i++)        //数据录入
		{
			temp[i] = sc.nextInt();
		}
		for(int j = 0 ; j < temp.length; j++)     //求最大值操作
		{
			top+=temp[j];
			
			if(top>max)
			{
				begin = rebegin;          //记录起始点,并实现起始点的更新与替换
				max = top;                  //子序列的最大值
				last = j+1;               //记录末尾点,随着数据的累和,向后逐渐更新
			}
			if(top < 0)
			{
				rebegin = j+2;
				top = 0;
			}
		}
		System.out.println("最大值="+max);
		System.out.println("起始位置="+begin+","+"终点位置="+last);
	}


}

思想:将要进行的检测的数据录入到数组中。然后依次将数组中的数据相加求和,定义max变量,begin变量,top变量以及last变量。begin变量用于记录最大值子串的起始位置,那么一开始就应该是1。last变量用于记录子串的末尾位置,相应的一开始也应该为1。之后利用循环进行累和,top变量用于记录每次累和后的结果。如果当前累和的结果大于上一次累和的结果(top>max)那么最大值需要更新,起始位置不变,末尾位置向后变化(last = j+1)。如果当前累和的结果小于上一次累和的结果,则起始位置与末尾位置均不改变,但继续进行求和。当求和的结果小于0时(top<0),则需要重新进行累和,用rebegin变量记录下重新累和的起始位置。因为前边的和为负数,任何数与负数相加都会比本身小,没有意义。如果重新累和后的结果大于了之前的max那么最大值更新,起始位置则为rebegin记录的位置(begin = rebegin),对于末尾位置,当max得到更新时,last也得到了更新。

具体情况大致分为4种:
1.前一部分为最大值。   例如:数据为:1 2 -4 1  该组数据中最大值为3,起始位置为1,末尾位置为2。
2.后一部分为最大值。   例如:数据为:1 2 -4 4  该组数据中最大值4,起始位置为4,末尾位置为4。
3.中间部分为最大值。   例如:数据为:1 1 -3 5 4 -4 3   该组数据中最大值为9,起始位置为4,末尾位置为5。
4.全串为最大值。           例如:数据为: 1 5 -1 6 该组数据中最大值为11,起始位置为1,末尾位置为4。

容器化部署指南——Docker/K8s环境下的OpenClaw实践(附Dockerfile) 通过本文的详细指导,你已经掌握了OpenClaw在Docker和Kubernetes环境中的容器化部署方法。从基础镜像构建到高级部署策略,从开发环境到生产环境,你现在已经具备了完整的容器化部署能力。 容器化技术为OpenClaw提供了灵活、可扩展、可移植的部署方案,能够满足不同规模和需求的应用场景。通过合理使用Docker和Kubernetes,你可以实现高效的部署管理和运维自动化。 在实际应用中,建议根据具体的业务需求选择合适的部署策略,并结合监控、日志、安全等最佳实践,确保系统的稳定性和可靠性。同时 阅读详情

相关推荐

WPS Office 2019 For Linux二次开发全流程:从源码下载到Demo运行

本文详细介绍了在Linux环境下进行WPS Office 2019 C++二次开发的全流程,涵盖从开发环境准备、源码获取、核心依赖(Qt与WPS)安装配置,到最终编译运行官方Demo的完整步骤。文章重点解析了环境搭建中的常见问题与解决方案,旨在帮助开发者快速上手WPS二次开发。

weixin_29001423的博客 388

六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)

问题描述:       连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个。       比如例如给定序列:            { -2, 11, -4, 13, -5, -2 }         其最大连续子序列为{ 11, -4, 13 },最大和为20。 =================================================

水果君の日常 2万+

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 238

【java】659. 分割数组为连续子序列-----提高算法能力,必须要有思考能力!!!

给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割,则返回 true ;否则,返回 false 。 示例 1: 输入: [1,2,3,3,4,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3 3, 4, 5 示例 2: 输入: [1,2,3,3,4,4,5,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3, 4, 5 3, 4,

惠菁 322

锁定放大器

锁定放大器

qq_46757048的博客 4706

Prompt Engineering 学习指南:从入门到精通的最佳路径与资源

随着大型语言模型(LLM)能力的飞速发展,Prompt Engineering(提示工程)已成为人与AI协作的核心技能。本报告旨在为不同水平的学习者提供一条清晰、高效的学习路径,整合了当前社区公认的最佳实践和顶级开源资源,帮助您系统地掌握 Prompt Engineering,释放 LLM 的全部潜力。保持好奇心,不断尝试,您将能驾驭语言模型这一强大的工具,创造出前所未有的价值。超越简单的“一问一答”,学习如何将 Prompt Engineering 与外部工具和数据结合,构建强大的 AI 应用。

shiter编写程序的艺术 696

20.连续子序列和

题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 解析:(动规)以当前元素结束的最大连续和=max(前一元素结束的最大连续和+当前元素值,当前元素值) //dp[i]=max(dp[i-1]+nums...

ZH956318的博客 1928

electron:解决打包后报错Cannot find module ‘X‘ 运行报错各种模块缺失问题(解决electron build打包后运行应用报错启动失败或白屏,无论模块名称是什么都能解决!)

Electron app打包后启动报错:“Cannot find module 'X'”解决方案,electron-builder 打包出现 cannot find module,electron 打包后找不到module问题,electron打包运行白屏、Can not find modules ‘x‘,electron项目打包报错,electron打包后,点击生成的exe应用程序出现Cannot find module,解决electron-build打包后运行app报错:cannot find mod

✅ 精选推荐文章 4383

数组最大连续子序列和

题目:给定一个数组,其中元素可正可负,求其中最大连续子序列的和。 这题是一道非常经典的面试题,会经常出现在各种面试中,具体有好几种不同时间复杂度的解法,那么最好的方法是用动态规划方法来求解。 第一种:时间复杂度为O(n^3) 暴力法求解。三层循环,从起点和终点开始,第一层循环确定起点,第二层循环确定终点,第三层循环在起点和终点之间遍历。 public static int maxSubA...

渣渣 5624

项目报告:基于Sentaurus TCAD的多沟道长度NMOS器件仿真、SPICE模型提取与环形振荡器电路验证

本项目基于Sentaurus TCAD工具,完成了从器件仿真到电路验证的全流程研究。首先构建了45nm、65nm和90nm三种沟道长度的NMOS器件,通过TCAD仿真分析了其电学特性,观察到明显的短沟道效应。随后提取了BSIM4 SPICE模型参数,并生成Hspice可用的模型文件。最后利用该模型设计了11级环形振荡器进行电路验证,证明了模型的实用性。研究结果表明,随着沟道长度缩短,器件性能虽有所提升,但短沟道效应导致关态电流显著增加,影响整体能效。本项目为纳米尺度MOSFET的建模与电路设计提供了完整的技

huanghm88的专栏 283

英飞凌Tricore问题排查01_Det/Reset/Trap排查宝典

软件跑飞进Det或发生Reset或进Trap了,怎么查?有固定套路可以follow吗?英飞凌Tricore又有哪些专门的定位办法?本篇为您娓娓道来。

initiallizer的博客 4416

java取出连续子串_JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串...

思想:将要进行的检测的数据录入到数组中。然后依次将数组中的数据相加求和,定义max变量,begin变量,top变量以及last变量。begin变量用于记录最大值子串的起始位置,那么一开始就应该是1。last变量用于记录子串的末尾位置,相应的一开始也应该为1。之后利用循环进行累和,top变量用于记录每次累和后的结果。如果当前累和的结果大于上一次累和的结果(top>max)那么最大值需要更新,起...

weixin_42508185的博客 445

博途PLC模糊PID控制(量化因子和比例因子)

参数"量化因子和比例因子",都是为了对清晰值进行比例变换而设置的,其作用是使变量按一定比例进行放大或缩小,以便和我们的模糊论域相匹配完成一一映射。这种变换对整个系统的工作性能也是有影响的。(其实相当于额外引入了比例作用,所以说模糊PID的调节是个系统工程)。限于本人能力,文中难免出现错误和不足,欢迎大家批评和指正。博途PLC的模糊PID控制完整算法可以参看下面这篇文章博途PLC模糊PID控制详解(SCL完整源代码+参数)_RXXW_Dor的博客-优快云博客。......

RXXW_Dor的博客 5268

深入理解后缀数组与高度数组

后缀数组是对字符串的所有后缀进行排序后,记录每个后缀在排序结果中的起始位置的数组。例如,对于字符串 "banana",其所有后缀为:"banana", "anana", "nana", "ana", "na", "a"。将这些后缀按字典序排序后得到:"a", "ana", "anana", "banana", "na", "nana",对应的后缀数组 SA 为 [5, 3, 1, 0, 4, 2],即 SA [i] 表示排名为 i 的后缀在原字符串中的起始下标。

m0_57836225的博客 748

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【滑动窗口】字符串的最短子串问题与滑动窗口解法

滑动窗口是一种高效解决子串或子数组问题的算法,尤其适合处理动态窗口大小的问题。本题通过滑动窗口巧妙调整子串范围,达到了高效计算的目标。问题拆解能力通过明确需求,合理分解任务,确保算法实现简单清晰。数据结构选择使用Map(哈希表)统计字符频次,提升了字符操作的效率。滑动窗口优化通过动态调整窗口边界,避免了暴力枚举带来的性能开销。尤其适合处理动态窗口大小的问题。本题通过滑动窗口巧妙调整子串范围,达到了高效计算的目标。问题拆解能力通过明确需求,合理分解任务,确保算法实现简单清晰。数据结构选择。

学不会就接着学 1099

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为资深技术官整理出的“算法面试宝典”下载量已突破40W!不服都不行

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性。

2401_84557547的博客 815

Java面试吃透这一篇就没有拿不到的offer,最新美团点评Java团队面试题

一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。

2401_83703866的博客 760

题解 | #求小球落地5次后所经历的路程和第5次反弹的高度#

虽然在公司的时间比较短,还没有晋升的经验,但据在里面工作几年的师兄所说,只要踏踏实。氛围好,活动多:作为一家500强的公司,霍尼韦尔的公司氛围很不错,有许多活动可以参与。轻松,氛围好,适合养老:在霍尼韦尔的嵌入式岗位上,工作相对轻松,公司氛围很好,给人一种光鲜亮丽的感觉。班车便利,自由度高,基本不加班:在霍尼韦尔担任硬件工程师岗位,可以享受到方便的班车服务,并且公司对于考勤比较自由。整体氛围还可以,薪资相对较好:小鹏汽车的整体氛围在一般情况下还是不错的,而且相较于传统主机厂,薪资待遇要好一些。

2301_79125642的博客 122

使用Azure Data Factory REST API和

知识点:理解递归寻找的本质,dfs思路:其实和找最大值没有区别,回忆我们之前写的找最大值,拿到左子树和右子树,然后和当前的val进行对比,这里其实就是判断,如果。考察知识点:数组,窗口移动题目分析:该题可以通过设置一个左值为 left,右值为right的窗口,并计算窗口的内部的值的总和,之后将大于等于target的值记录。前两个帖子记录了投递的公司和研究所,正式批也要开始了,这里开始更新我最新的投递记录,包括私企国企研究所什么的,而且也会写的详细一些,希望能帮到大家。

2301_79125431的博客 105

java基础入门课后答案,进阶学习资料

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

2401_84408780的博客 555

题解 | #判断链表中是否有环# 思路:快慢指针、哈希和标记

题目考察的知识点 : 数组和字典的使用题目解答方法的文字分析:遍历输入数组 cowsRomanNumeral 中的每个罗马数字字符串字符,根据题目中给出的规则将。题目考察的知识点 : 动态规划,斐波那契题目解答方法的文字分析:定义状态:明确问题的状态表示,这里即为n块草料确定转移方程:状态之间的关系,即吃n块草料的方案数。考察的知识点:多维数组、队列;题目考察的知识点考察二叉树的遍历题目解答方法的文字分析深度优先遍历二叉树,从根节点开始向下遍历,每到一个节点计算路径的和,到了叶子计算完之后返回结果。

2301_78234743的博客 980

hdu 4561 水模拟

连续最大积 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1646    Accepted Submission(s): 526 Problem Description 小明和他的好朋友小西在玩一个游戏,由电脑随

q651111937的专栏 547

字符串转数组_每日一题 | Day 46: 842. 将数组拆分成斐波那契序列

要想结识蝴蝶,就得先忍受两三只毛毛虫的叮咬。题目描述题解采用回溯法进行求解,对于回溯法,首先要屡清楚回溯法结束的条件,这道题的条件是如果字符串遍历完,并且得到正确的fn = fn-1 + fn-2,则返回true;其次,在每次尝试的过程中,需要进行剪枝,提前结束循环,根据给出的条件可以得到剪枝条件不以0开头;当前数字不能大于2^31 - 1.代码语言:JavaclassSolutio...

weixin_39959482的博客 336
下一篇: Java十进制数与其余进制数转换问题!!!!!!!
Happly·嘻嘻
博客等级 码龄10年 157粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值