題目描述
小組編號問題。輸入一組數(shù)【2,7,3,4,9】启泣,表示第一組有2個人涣脚,編號為【1、2】寥茫,第二組有7個人編號為【39】遣蚀,第三組有3個人編號為【1012】,第四組有4個人編號為【1316】,第五組有9個人編號為【1725】芭梯。
現(xiàn)在求险耀,編號為1、25玖喘、11的人分別在哪個組里胰耗。
示例:
輸入
5
2 7 3 4 9
3
1 25 11
輸出
1 5 3
思路:第一個想法就是計數(shù)問題,依次累加小組成員數(shù)芒涡,如果組員數(shù)剛好大于等于編號,則輸出當(dāng)前組卖漫。比如現(xiàn)在求編號為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]+" ");
}
}
}
}