黄志颖


私信TA

用户名:2258070040

访问量:1826

签 名:

等  级
排  名 5000
经  验 1607
参赛次数 0
文章发表 10
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
        从头开始遍历数组,sum记录数组值的和,并用max记录最大值,如果sum大于max就更新max的值为sum,如果sum小于零就将sum记为0,因为如果num小于零的话就表示这段子列加上去只会降低后面子列的和不会提高后面子列的和,所以可以去掉这段子列,一个明显的动态规划题。
注意事项:
        注意事项只有一个,不要用java!不要用java!同样的代码java改c++秒过,因为这个题就是LeetCode上的53题,为了验证是不是我没有考虑周全导致自以为的代码正确,我专门用我的java代码去LeetCode试了,通过了,换这个网站他就直接给我报运行错误,不是很能理解。
参考代码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] num = new int[n];
		for (int i = 0; i < num.length; i++) {
			num[i] = scanner.nextInt();
		}
		int max = Integer.MIN_VALUE;
		int sum = 0;
		for (int i = 0; i < num.length; i++) {
			sum = sum + num[i];
			if(sum > max) {
				max = sum;
			}
			if (sum < 0) {
				sum = 0;
			}
		}
		System.out.print(max);
	}
}


 

0.0分

5 人评分

  评论区

这个对java的支持太差了,我尝试了边输入边处理(防止创建大数组而引起报错),仍然是报的运行错误
2022-01-21 13:25:42
  • «
  • 1
  • »