【链家笔试题】部队分组
2017-08-20 11:05
295 查看
思路
二分查找,假如输入的数据不在有效数据范围这个二分会抛错,没做异常输入处理。
import java.util.Scanner; public class Main { private static int find(int[] array, int num) { int low = 0; int high = array.length - 1; while (low <= high) { int mid = (low + high) / 2; if (num >= array[mid] && num < array[mid + 1]) { return mid; } if (num > array[mid]) { low = mid + 1; } else if (num < array[mid]) { high = mid - 1; } } return -1; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] num = new int[n + 1]; num[0] = 1; for (int i = 1; i <= n; i++) { int temp = sc.nextInt(); num[i] = num[i - 1] + temp; } int k = sc.nextInt(); int[] q = new int[k]; for (int i = 0; i < k; i++) { q[i] = sc.nextInt(); } for (int i = 0; i < q.length; i++) { System.out.println(find(num, q[i])+1); } } }
相关文章推荐
- 链家笔试链家——找寻最小消费获取最大平均分java
- 【链家笔试题】问卷调查
- 【链家笔试】摘苹果
- 笔试题——团队活动分组
- 链家笔试:斐波那契数列中的第k个数
- 阿里笔试题(2017在线编程题)-- 数串分组
- 链家秋招内推编程笔试题目
- 链家、CVTE笔试题
- 2016年链家网校招笔试(JAVA研发)
- 链家笔试:素数打表
- 链家笔试题--java实现两个大整数相乘的算法
- 2018链家笔试编程题
- 链家2018招聘京外笔试题(Android研发工程师)
- 补充,上次链家笔试的0-1背包问题
- 链家笔试题总结
- 链家笔试算法题
- 链家笔试题
- 链家笔试题整理
- 阿里笔试题(2017在线编程题)-- 数串分组 --Java实现
- 2018链家校招内推-大数据开发工程师笔试编程题