Title: Remove Element 53
Difficulty:Easy
原题leetcode地址:https://leetcode.com/problems/maximum-subarray/
1. 具体说明详见代码中的注释,时间&空间复杂度如下:
时间复杂度:O(n),一层while循环,遍历的是数组的长度。
空间复杂度:O(1),没有申请额外的空间。
/**
* 对于一个新的数,有两种选择:
* 1、加入之前的一组
* 2、自己从头开始起一个组
* 如果加入之前的组比自己从头开始起的组大,那就加入之前的一组;否则自己从头开始起一个组
* @param nums
* @return
*/
public static int maxSubArray(int[] nums) {
if (nums.length <= 0 || nums == null) {
return 0;
}
int sum[] = new int[nums.length];
int max = nums[0];
sum[0] = max;
for (int i = 1; i < nums.length; i++) {
sum[i] = maxNums(nums[i], sum[i - 1] + nums[i]);
max = maxNums(max, sum[i]);
}
return max;
}
/**
* 两个数判断大小
* @param num1
* @param num2
* @return
*/
private static int maxNums(int num1, int num2) {
if (num1 >= num2) {
return num1;
}
else {
return num2;
}
}