Cracking the coding interview--Q19.7
来源:互联网 发布:office for 破解mac 编辑:程序博客网 时间:2024/05/17 22:37
题目
原文:
You are given an array of integers (both positive and negative). Find the continuous sequence with the largest sum. Return the sum.
EXAMPLE
Input: {2, -8, 3, -2, 4, -10}
Output: 5 (i.e., {3, -2, 4} )
译文:给出一个整型数组(包括正负数),找出和最大的子序列,并返回该值。
解答
遍历一遍数组,用变量maxsum保存遍历过程中的最大和, 用变量cursum保存遍历过程中的当前和。在遍历的过程中,我们只需要做3件事, 第一:如果当前和cursum小于等于0,说明前面的连续和不会对后面的连续和产生贡献, 要么使后面的连续和减少,要么不变。因此舍弃cursum,用当前的元素更新它。 第二:如果当前和cursum是大于0的,累加当前元素。第三:如果当前和cursum 大于最大和maxsum,则更新最大和maxsum。
class Q19_7{public static boolean g_invalid=false;public static void main(String[] args){int[] a={2,-8,3,-2,4,-10};int max_sum=getMaxSum(a);if(g_invalid)System.out.println("Invalid Input!");elseSystem.out.println(max_sum);}public static int getMaxSum(int[] a,int n){if(a==null||n<=0){g_invalid=true;return 0;}g_invalid=false;int max_sum=1<<31;int cur_sum=0;for(int i=0;i<n;++i){if(cur_sum<=0)cur_sum=a[i];elsecur_sum+=a[i];if(cur_sum>max_sum)max_sum=cur_sum;}return max_sum;}//method2, but if the array is all negative numbers, can't use this methodpublic static int getMaxSum(int[] a){int maxsum=0;int sum=0;for(int i=0;i<a.length;i++){sum+=a[i];if(maxsum<sum){maxsum=sum;}else if(sum<0){sum=0;}}return maxsum;}}
注:当序列全部是负数时,就不能采用以上的方法了。
---EOF---
0 0
- Cracking the coding interview--Q19.7
- Cracking the coding interview--Q19.1
- Cracking the coding interview--Q19.2
- Cracking the coding interview--Q19.3
- Cracking the coding interview--Q19.4
- Cracking the coding interview--Q19.5
- Cracking the coding interview--Q19.6
- Cracking the coding interview--Q19.8
- Cracking the coding interview--Q19.10
- Cracking the coding interview--Q19.11
- Cracking the coding interview--Q19.10
- Cracking the Coding Interview
- 《Cracking the coding interview》
- Cracking The Coding Interview
- Cracking the coding interview
- Cracking the coding interview
- Cracking the coding interview--Q9.7
- Cracking the coding interview--Q1.7
- 微博关系服务与Redis的故事
- URL或JS中的URL传参中文乱码
- Oracle数据库和session等待事件有关的几个视图
- USTC 1280 / 携程决赛1004 最短路径的代价
- 策略模式
- Cracking the coding interview--Q19.7
- JAVA调用存储过程实现分页技术。。
- hdu 4027 Can you answer these queries? 线段树
- webstorm插件使用
- POJ 1470 Closest Common Ancestors
- c语言的重要概念
- kettle使用命令行运行任务(转)
- java中Writer的线程安全性
- Eclipse快速入门:远程调试Java应用