leetcode+华为笔试题-java实现返回一个整数数组中最大子数组的和
2018-03-29 10:49
531 查看
方法一:暴力枚举
定义一个最大值max初始化一个很小的数,定义一个变量sum表示求和值,遍历数组元素,从第一个元素开始,依次相加,如果和sum比最大值max大就将sum赋值给最大值。然后再来一个循环控制从第i个数组元素开始求和,直到n.
时间复杂度:O(n^2)
方式二:贪心法
因为每次求和都是将i前面的元素相加,会出现重复的情况,如果出现相加完之后是负数,说明这时我就要继续遍历找到第一个正数,将前面的和为负数的元素全部丢掉。如果找不到正数,那现在的值max就是最大值。
时间复杂度:O(n)
代码如下:
public class Demo1 { public static void main(String[] args) { int arr[] = { 2, -3, 4, 11, -5, 8, 3, -6 }; int maxSum = getMaxSum2(arr); System.out.println("最大子数组的和为:" + maxSum); } private static int getMaxSum(int[] arr) { int max = -100000; for (int i = 0; i < arr.length; i++) { int sum = 0; for (int j = i; j < arr.length; j++) { sum += arr[j]; if (max < sum) { max = sum; } } } return max; } // 贪心法 private static int getMaxSum2(int[] arr) { int n = arr.length; int max = -1000000; int sum = 0; for (int i = 0; i < n; i++) { sum += arr[i]; if (sum > max) { max = sum; } if (sum < 0) { max = 0; // 子串和为负数,丢掉 } } return max; } }
相关文章推荐
- 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
- 结对开发——返回一个整数数组中最大子数组的和
- 返回一个二维整数数组中最大子数组的和1
- 返回一个整数数组中最大子数组的和
- java实现一个整数和一个小数的四则运算和求最大值,平均值。
- 结对开发之返回一个整数数组中最大子数组的和
- 《返回一个整数数组中最大子数组的和》
- 返回一个整数数组中最大子数组的和
- 返回一个整数数组中最大子数组的和
- 题目:给一个排序好的整数数组A,请写一个函数,输入是数组A和一个整数x,返回数组A中值小于x的最大元素的索引值
- 题目:返回一个整数数组中最大子数组的和。
- 3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三
- 返回一个整数数组(环形数组)中最大子数组的和
- 返回一个整数数组最大子数组的和
- Java编程:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。
- 结对开发之《返回一个整数数组中最大子数组的和》
- 返回一个整数数组中最大子数组的和-课堂训练(子数组为连续)
- 课堂练习之结对开发项目思想总结:返回一个整数数组中最大子数组的和
- 返回一个整数数组中最大子数组的和(升级版)
- 3月17号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和一