首页 > 9.22 并夕夕书架java版
头像
牛客583497056号
发布于 2021-09-22 17:27
+ 关注

9.22 并夕夕书架java版

package com.hustdj;

import java.util.Scanner;

public class Bookshelf_pdd {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] books = new int[n];
        for (int i = 0; i < n; i++) {
            books[i]=scanner.nextInt();
        }
        int m = scanner.nextInt();
        int[] target = new int[m];
        for (int i = 0; i < m; i++) {
            target[i]=scanner.nextInt();
        }
        Bookshelf_pdd obj = new Bookshelf_pdd();
        int[] level = obj.findLevel(n, books, target);
        for (int i = 0; i < level.length; i++) {
            System.out.println(level[i]);
        }
    }

    public int[] findLevel(int n,int[] books,int[] target){
        int[] nums = new int[n + 1];
        int[] res = new int[target.length];
        int sum = books[0];
        nums[0]=1;
        for (int i = 1; i < n; i++) {
            nums[i]=nums[i-1]+sum;
            sum=books[i];
        }
        nums[n]=nums[n-1]+sum-1;
        for (int i = 0; i < target.length; i++) {
            int one = findOne(nums, target[i]);
            res[i]=one+1;
        }
        return res;
    }

    public int findOne(int[] nums,int target){
        int left=0;
        int right=nums.length-1;
        while(left<=right){
            int mid = left+(right-left)/2;
            if (nums[mid]==target){
                return mid;
            }else if (nums[mid]>target){
                right = mid-1;
            }else{
                left = mid+1;
            }
        }
        return left-1;
    }
}


全部评论

(0) 回帖
加载中...
话题 回帖