博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大子数组
阅读量:2351 次
发布时间:2019-05-10

本文共 542 字,大约阅读时间需要 1 分钟。

/* * 输入一个整形数组,数组里有正数也有负数。 * 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 * 求所有子数组的和的最大值。要求时间复杂度为O(n)。 * 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, * 因此输出为该子数组的和18。 * 思路:保存当前的和,从做遍历到右,记录最大值,当sum<0的时候值sum为0 * */public class MaxSubArray {	public static int maxsubarray(int a[]){		int sum=0;		int max=Integer.MIN_VALUE;		for(int cur:a){			sum+=cur;			if (sum>max) {				max=sum;			}else if (sum<0) {				sum=0;			}		}		return max;	}	public static void main(String[] args) {		int a[]={1,2,10,-9,20,1,-6};		System.out.println(maxsubarray(a));	}}

转载地址:http://comvb.baihongyu.com/

你可能感兴趣的文章
ICMP协议
查看>>
SSL协议
查看>>
IMAP,POP3,SMTP协议
查看>>
数据库协议
查看>>
SNMP协议
查看>>
RDP远程桌面协议
查看>>
ssh Forward X11
查看>>
搜索引擎知识图谱相关结构化数据挖掘与去歧处理
查看>>
找到n个元素中的第二小元素
查看>>
linux命令之find
查看>>
linux命令学习之cut
查看>>
linux下目录读权限与执行权限区别
查看>>
[think in java]知识点学习
查看>>
linux下线程调试 ulimit core
查看>>
linux 知识点拾遗
查看>>
java equal和==的区别
查看>>
c++中static的用法总结
查看>>
const的常见用法
查看>>
crontab使用手册
查看>>
虚继承与虚基类的本质
查看>>