牛客网:丰收
1. 题目链接
https://www.nowcoder.com/practice/83b419c027fa490aa60669b0e7dc06a3?tpId=98&tqId=32834&tPage=1&rp=1&ru=%2Fta%2F2019test&qru=%2Fta%2F2019test%2Fquestion-ranking
2. 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//一共有n堆苹果
int n = sc.nextInt();
int[] v = new int[n + 1];
v[0] = sc.nextInt();
//将苹果依次叠加起来
for(int i = 1; i < n; i++){
v[i] = sc.nextInt();
v[i] += v[i-1];
}
//一共有m次询问
int m = sc.nextInt();
int[] query = new int[m];
//每一次询问的苹果数
for (int i = 0; i < m; i++) {
query[i] = sc.nextInt();
}
//通过二分查找,找出每一次询问的结果
for (int i = 0; i < m; i++) {
int begin = 0;
int end = v.length - 1;
int mid = 0;
while (begin <= end) {
mid = (begin + end) / 2;
if (v[mid] > query[i]) {
end = mid - 1;
}
else if(v[mid] < query[i]){
begin = mid + 1;
}else{
begin = mid;
break;
}
}
System.out.println(begin + 1);
}
}
}