【算法题】数组连续和

250次阅读
没有评论

共计 875 个字符,预计需要花费 3 分钟才能阅读完成。

给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。

  • 第一行两个整数N x(0 < N <= 100000, 0 <= x <= 10000000)
  • 第二行有N个正整数(每个正整数小于等于100)
  • 输出 一个整数,表示所求的个数

输入
3 7
3 4 7
输出
4
说明
3+4 4+7 3+4+7 7这四组数据都是大于等于7的,所以答案为4

输入
10 10000000
1 2 3 4 5 6 7 8 9 10
输出
0

import java.util.Scanner;

/**
 * 标题:数组连续和 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限
 * 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。
 *
 * @since 2022年4月18日
 */
public class ContinuousArraySum {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String numStr = scanner.nextLine();

        // 取出两个数N x
        int N = Integer.parseInt(line.split(" ")[0]);
        int x = Integer.parseInt(line.split(" ")[1]);

        // 得到所有的正整数
        int[] ints = new int[N];
        String[] strings = numStr.split(" ");
        for (int i = 0; i < numStr.split(" ").length; i++) {
            ints[i] = Integer.parseInt(strings[i]);
        }

        int count = 0;
        int sum = 0;
        // 比较各种连续和
        for (int j = 0; j < N; j++) {
            for (int i = j; i < N; i++) {
                sum += ints[i];
                if (sum >= x) {
                    count++;
                }
            }
            sum = 0;
        }


        System.out.println(count);
    }
}
正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2022-04-18发表,共计875字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: