【链家笔试题】部队分组

来源:互联网 发布:java字符串截取到空格 编辑:程序博客网 时间:2024/04/29 14:58

这里写图片描述

思路
二分查找,假如输入的数据不在有效数据范围这个二分会抛错,没做异常输入处理。

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);        }    }}