输入一个整型数组,求所有子数组中和的最大值
2011-09-04 00:45
435 查看
/** * 输入一个整型数组,数组里有正数也有负数。 * 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 * 求所有子数组的和的最大值。要求时间复杂度为O(n)。 * 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, * 因此输出为该子数组的和18。 * 最简单的办法就是穷尽所有的子数组,计算他们的和,然后比较 * int maxSum(int arr[]){ int maximum = arr[0]; int sum=0; for(int i = 0; i < arr.length; i++){ for(int j = i; j < arr.length; j++) { for(int k = i; k <= j; k++) { sum += A[k]; } if(sum > maximum) maximum = sum; sum=0; } } return maximum; } */ public class MaxSum { /** * *依次遍历数组中的元素,把它们相加,如果加起来b * <0, *把b重新赋值,置为下一个元素,b=a[i]。 * *当b>sum,则更新sum=b; *若b<sum,则sum保持原值,不更新 */ public static int maxSum(int arr[]){ int sum = arr[0]; int b = 0; for(int i = 0;i<arr.length;i++){ if(b<=0) b=arr[i]; else b+=arr[i]; if(b>sum)sum=b; } return sum; } public static void main(String[] args) { //int arr[]={1,-2,3,10,-4,7,2,-5}; int arr[]={-1,-2,-3,-10,-4,-7,-2,-5}; int result = maxSum(arr); System.out.println(result); } }
相关文章推荐
- 输入整形数组,数组里有正数也有负数,数组中一个或连续的多个整数组成数组的子数组,求所有子数组中和的最大值 ,例如输入的数组为{1,-2,3,10,-4,7,2,-5}和最大的子数组为{3,10,
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中最大值
- [原]Java面试题-输入一个整型数组,找出最大值、最小值,并交换。
- 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 一个整形数组中有正数也有负数, 数组中连续一个或多个组成子数组,每个子数组都有一个和, 求所有子数组中和的最大值
- // 1、输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,
- 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
- 输入一个整型数组,实现一个函数,来调整数组中的数字顺序是的数组中所有的奇数位于数组前半部分,所有偶数位于数组的后半部分。
- 输入一个整形数组,求所有子数组的和的最大值
- 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
- 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 有一个整型二维数组,假设a[3][4] = {初始化了值},求出这个二维数组中所有的最大值,以及最大值对应的下标。 数组内部原有的值不能改变位置。
- 一个整形数组中有正数也有负数,数组中连续一个或多个组成子数组,每个子数组都有一个和,求所有子数组中和的最大值