网易校招笔试算法题

时间:2019-08-20
本文章向大家介绍网易校招笔试算法题,主要包括网易校招笔试算法题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package practice;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;



/**

- 输入描述:

- 每个输入包含一个测试用例。

- 每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。

- 接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。

- 接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。

- 保证不存在两项工作的报酬相同。

- 输出描述:

- 对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。

- 

- 示例1

- 输入

- 3 3 

- 1 100 

- 10 1000 

- 1000000000 1001 

- 9 10 1000000000

- 输出

- 100 

- 1000 

- 1001
  */
  public class FindWork {
  @SuppressWarnings({ "rawtypes", "resource", "unused", "unchecked" })
  public static void main(String args[]){
    Scanner input=new Scanner(System.in);
    int work_num;
    int person_num;
    long Pi[]=new long[100000];
    long Di[]=new long[100000];
    long Ai[]=new long[100000];
    long arg[]=new long[200005]; //人能力值+工作能力值
    long result[]=new long[200005];
    HashMap map=new HashMap();
    work_num=input.nextInt();
    person_num=input.nextInt();
    for(int i=0;i<work_num;i++){
        Di[i]=input.nextLong();
        Pi[i]=input.nextLong();
        arg[i]=Di[i];
    }
    for(int i=0;i<person_num;i++){
        Ai[i]=input.nextLong();
        arg[i+work_num]=Ai[i];
    }
    Arrays.sort(arg);  //对所有能力值进行排序
    int num=0;
    map.put(arg[0],num);
    //过滤掉重复的map中记录能力值和在所有能力值中的索引
    for(int i=1;i<arg.length;i++){
        if(arg[i]!=arg[i-1]){
            num++;
        map.put(arg[i],num);
        }
    }
    //将工作能力值所用到的报酬进行匹配
    for(int i =0;i<work_num;i++){
        result[(int) map.get(Di[i])]=Math.max(result[(int) map.get(Di[i])], Pi[i]);
    }
    //将还没有记录报酬的能力值进行赋值 同时将小于自身能力的最大报酬进行赋值 得到在此能力下可以获得的最大报酬
      for (int i = 1 ; i < work_num+person_num ;i++)
        result[i] = Math.max(result[i],result[i-1]);
      for (int i = 0 ; i < work_num ;i++)
        System.out.println(result[(int) map.get(Ai[i])]);
      
  }

  

}

原文地址:https://www.cnblogs.com/lihuidong/p/11385637.html