import java.util.Scanner;
public class test10 {
/**
* 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
*
* 示例 1:
* 输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
* 输出:6
* 解释:连续子数组[4,-1,2,1] 的和最大,为6 。
*
* 示例 2:
* 输入:nums = [1]
* 输出:1
*
* 示例 3:
* 输入:nums = [0]
* 输出:0
*
* 示例 4:
* 输入:nums = [-1]
* 输出:-1
*
* 示例 5:
* 输入:nums = [-100000]
* 输出:-100000
*
* 提示:
* 1 <= nums.length <= 105
* -104 <= nums[i] <= 104
*
* @param args
*/
public static void main(String[] args) {
//键盘输入数组
Scanner sc = new Scanner(System.in);
String[] str = sc.next().split(",");
int[] nums = new int[str.length];
for(int i=0; i< str.length; i++){
nums[i] = Integer.parseInt(str[i]);
}
//输出数组
System.out.print("nums = [");
for(int i=0; i< nums.length-1; i++){
System.out.print(nums[i]);
System.out.print(",");
}
System.out.println(nums[nums.length-1]+"]");
System.out.println(maxSubArray(nums));
}
//利用动态规划思想求解 --> f(i)=max{f(i−1)+nums[i],nums[i]}
public static int maxSubArray(int[] nums){
int pre = 0, max = nums[0];
for(int num: nums){
pre = Math.max(pre+num, num);
max = Math.max(max, pre);
}
return max;
}
}
leetcode010--用动态规划思想寻找有最大和的连续子数组
最新推荐文章于 2023-11-23 16:57:23 发布