小组编号问题。输入一组数【2,7,3,4,9】,表示第一组有2个

2017-12-05  本文已影响33人  yeying12321

题目描述
小组编号问题。输入一组数【2,7,3,4,9】,表示第一组有2个人,编号为【1、2】,第二组有7个人编号为【39】,第三组有3个人编号为【1012】,第四组有4个人编号为【1316】,第五组有9个人编号为【1725】。

现在求,编号为1、25、11的人分别在哪个组里。

示例:
输入
5
2 7 3 4 9
3
1 25 11

输出
1 5 3

思路:第一个想法就是计数问题,依次累加小组成员数,如果组员数刚好大于等于编号,则输出当前组。比如现在求编号为11的人在哪个组。第一组有2个人,第二组有7个人,第三组有3个人,2 + 7 + 3 > 11 所以11在第三组里。感觉比不是很好的思路,每次都需要从头开始累加,计算量较大。

public class Solution {
    public static int[] getRes(int[] arr, int[] query) {
        int[] res = new int[query.length];
        for (int i = 0; i < query.length; i++) {
            int sum=0;
            for (int j = 0; j <arr.length ; j++) {
                sum+=arr[j];
                if(sum>=query[i]){
                    res[i]=j+1;
                    break;
                }
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int  n=sc.nextInt();
            int[] arr=new int[n];
            for (int i = 0; i <n ; i++) {
                arr[i]=sc.nextInt();
            }
            int m=sc.nextInt();
            int[] query=new int[m];
            for (int i = 0; i <m ; i++) {
                query[i]=sc.nextInt();
            }
            int[] res=getRes(arr,query);
            for (int i = 0; i <m ; i++) {
                System.out.print(res[i]+" ");
            }
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读