打印总和为负的数组中子数组的数量

时间:2019-06-01 08:22:24

标签: java arrays nested-loops

import java.io.*;
import java.util.*;
public class Solution {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt(); //taking input number of elements in the array
        int[] a=new int[n];
        for(int i=0;i<n;i++){
            a[i]=scan.nextInt(); //taking input elements of the array
        }
        int count=0;
        //start point
        for(int i=0;i<n;i++){
            //end point
            for(int j=i;j<n;j++){
                for(int k=i;k<=j;k++){
                    int sum=0;
                    sum+=a[k];  //calculating the sum of subarray
                    if(sum<0)
                    count++;
                }
            }
        }
        System.out.println(count); //printing the no of negative sums 
    }
}

这里有三个嵌套循环,第一个循环定义开始位置,第二个循环定义结束位置,第三个循环用于遍历子子元素并计算它们的和,如果和小于零,则增加计数。但是使用此代码,我得到的答案是错误的。

1 个答案:

答案 0 :(得分:1)

不需要第三次循环

int count = 0;
    for(int i = 0; i < n; i++) { // for start position
        int sum = 0;
        for(int j = i; j < n; j++) { // for end position
            sum += a[j];
            if(sum < 0) {
                count++;
            }
        }
    }
// output count