就服网易

分苹果的代码,有ac的来解答下
#网易#
全部评论
import java.util.Scanner;  public class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in );         int num = scanner.nextInt();         int[] nums = new int[num];         for (int i = 0; i < num; i++) {             nums[i] = scanner.nextInt();             if (i > 0) {                 nums[i] = nums[i - 1] + nums[i];             }         }         int req = scanner.nextInt();         for (int i = 0; i < req; i++) {             int target = scanner.nextInt();             int start = 0;             int end = nums.length - 1;             while (start <= end) {                 int mid = (start + end) / 2;                 if (nums[mid] >= target && ((mid > 0 && nums[mid - 1] < target) || mid == 0)) {                     System.out.println(mid + 1);                     break;                 } else if (nums[mid] > target) {                     end = mid - 1;                 } else if (nums[mid] < target) {                     start = mid + 1;                 }             }         }     } }
点赞 回复 分享
发布于 2018-08-11 17:40
我擦,原来在二分查找上
点赞 回复 分享
发布于 2018-08-11 17:45
二分查找
点赞 回复 分享
发布于 2018-08-11 17:42
二分。。之前把数组累加一下。
点赞 回复 分享
发布于 2018-08-11 17:44
二分的复杂度多少啊?
点赞 回复 分享
发布于 2018-08-11 18:21
我二分也卡在30% 泪崩
点赞 回复 分享
发布于 2018-08-11 18:23
还有谁有这个题的测试用例吗?
点赞 回复 分享
发布于 2018-08-11 18:35
来个骚的 import java.util.Arrays; import java.util.Scanner; public class Main {         public static void main(String[] args) {                           //O(nlogn)                  Scanner scanner=new Scanner(System.in);         int n=scanner.nextInt();                  int a[]=new int[n];                  for (int i = 0; i < a.length; i++) {             a[i]=scanner.nextInt();         }                  int m=scanner.nextInt();         int q[]=new int[m];                           for (int i = 0; i < q.length; i++) {             q[i]=scanner.nextInt();         }                                    scanner.close();                                    int count[]=new int[n];         count[0]=a[0];                  for (int i = 1; i < count.length; i++) {             count[i]=count[i-1]+a[i];         }                                             for (int i = 0; i < q.length; i++) {                          int s=Arrays.binarySearch(count, q[i]);                                       if(s>0) {                 System.out.println(s+1);             }else {                                  System.out.println(Math.abs(s));             }                                                             }                                                                             }      }
点赞 回复 分享
发布于 2018-08-11 18:55
题目最迟明天就会放到题库给大家补题练习。
点赞 回复 分享
发布于 2018-08-11 18:56

相关推荐

狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务