求子数组的最大和
2017-09-22 13:50
211 查看
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。
package com.itcast.demo.random;
import java.util.Arrays;
import java.util.Scanner;
public class NumDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请随意输入一串数字:");
Scanner sc = new Scanner(System.in);
String[] num = null;
num = sc.nextLine().split(" ");
int[] number = new int[num.length];
for (int i = 0; i < number.length; i++) {
number[i] = Integer.valueOf(num[i]);
}
int max = MaxSum(number);
System.out.println(max);
}
private static int MaxSum(int[] number) {
// TODO Auto-generated method stub
int sum = 0;
int max=0;
for(int i=0;i<number.length;i++){
sum=sum+number[number.length-i-1];
if(number[number.length-i-1] >= 0){
if(max < sum){
max = sum ;
}
}
if(sum < 0){
sum = 0;
}
}
return max;
}
}
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。
package com.itcast.demo.random;
import java.util.Arrays;
import java.util.Scanner;
public class NumDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请随意输入一串数字:");
Scanner sc = new Scanner(System.in);
String[] num = null;
num = sc.nextLine().split(" ");
int[] number = new int[num.length];
for (int i = 0; i < number.length; i++) {
number[i] = Integer.valueOf(num[i]);
}
int max = MaxSum(number);
System.out.println(max);
}
private static int MaxSum(int[] number) {
// TODO Auto-generated method stub
int sum = 0;
int max=0;
for(int i=0;i<number.length;i++){
sum=sum+number[number.length-i-1];
if(number[number.length-i-1] >= 0){
if(max < sum){
max = sum ;
}
}
if(sum < 0){
sum = 0;
}
}
return max;
}
}
相关文章推荐
- 求子数组的最大和
- (微软面试100题)求子数组的最大和
- Java实现求子数组和的最大值算法示例
- (程序员面试题精选(03))-求子数组的最大和
- 程序员面试题100题第03题——求子数组的最大和
- 程序员面试题100题第03题——求子数组的最大和
- 算法与数据结构面试题(3)-求子数组的最大和
- 第3题:求子数组的最大和
- 华为OJ 求子数组的最大和
- 求子数组的最大和
- 微软面试100道之3 求子数组的最大和(数组)
- 微软面试题解题笔记——求子数组的最大和
- 算法讨论(二)---求子数组的最大和
- 栈和队列--求子数组的最大和
- [编程之美2.14]求子数组之和的最大值
- 【算法总结-DP】求子数组的最大和
- 微软算法100题03 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和。
- 微软100题第三题(求子数组的最大和)