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

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

作者: yeying12321 | 来源:发表于2017-12-05 19:02 被阅读33次

    题目描述
    小组编号问题。输入一组数【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]+" ");
                }
            }
        }
    }
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/skacixtx.html