O(n) 级复杂度实现寻找最大值连续子串和求子串最大值算法(Java)

该算法旨在从给定的数组中寻找最大值连续子串,例如:-2,-4,-7,-20,1,1,1,1,-10...。通过使用滑动窗口策略,当遇到负数时跳过,直到找到正数开始累加,更新最大子串和。在寻找最大子串时,同时记录最大值对应的起始位置,最终输出最大值及其子串。" 127809106,12164407,C++中的MyString类与运算符重载实践,"['C++编程', '类设计', '运算符重载']
摘要由CSDN通过智能技术生成

假定给定的一组数为:-2,-4,-7,-20,1,1,1,1,-10,1,1,1,5,-10,10,10,10,-25,10,10,10,10,10,10,-300 

算法要求:在给定的数组中找出某个连续子串,该子串的值是最大的,并且输出该子串和最大值。

代码如下:

public class Search {
	static int max=0;
	static int max1=0;
    static int [] n = {-2,-4,-7,-20,1,1,1,1,-10,1,1,1,5,-10,10,10,10,-25,10,10,10,10,10,10,-300}; 
    static String tempStr = "";
    static String maxStr = "";
    static int temp;
    
    static String  Find() {
    	for(int i = 0;i <25; i++) {
    		
    		temp += n[i];
    	    tempStr += n[i]+",";
    			
    		if(temp >= max) {
    			maxStr = tempStr;
    			}
    		
    		if(temp < 0) {
    			temp = 0;
    		    tempStr = "";
    		   }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值