【算法题】数组连续和

  • A+
所属分类:编程茶楼


共计 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);
    }
}
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: