java 给定未排序的非负整数数组,找到一个连续的子数组,它会增加给定的数字。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 给定未排序的非负整数数组,找到一个连续的子数组,它会增加给定的数字。相关的知识,希望对你有一定的参考价值。

import java.util.Scanner;

class Library {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for(int i = 0 ; i < T ; i ++)
        {
            int N = sc.nextInt();
            int S = sc.nextInt();
            int [] numbers = new int[N];
            for(int j = 0 ; j < N ; j ++)
            {
                numbers[j] = sc.nextInt();
            }
            int start = 0 ;
            int end =0;
            int sum =numbers[0] ;
            boolean found = false;
            for(int j = 1 ; j < N ; )
            {
                if(sum < S)
                {
                    sum +=numbers[j];
                    end=j;
                    if(sum==S)
                    {
                        System.out.println( (start+1)+ " " + (end+1));
                        found = true;
                        break;
                    }
                    j++;
                }
                else if(sum > S)
                {
                    sum-= numbers[start];
                    start++;
                }
                else
                {
                    System.out.println( (start+1)+ " " + (end+1));
                    found = true;
                    break;
                    
                }
            }
            if(!found)
                System.out.println(-1);
            
        }
    }
}

以上是关于java 给定未排序的非负整数数组,找到一个连续的子数组,它会增加给定的数字。的主要内容,如果未能解决你的问题,请参考以下文章