网易校招笔试算法题
时间: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
- Oracle Schema
- Oracle 索引
- Oracle dbms_random随机函数包
- volatile和Synchronized区别
- Oracle 快速插入1000万条数据的实现方式
- HashMap实现原理分析
- Oracle TM锁和TX锁
- Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)
- select for update和select for update wait和select for update nowait的区别
- Android入门之动画
- Java 读写大文本文件
- 高级聚类
- Oracle 数据库名、实例名、Oracle_SID
- Oracle 多行、多列子查询
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django Form设置文本框为readonly操作
- 浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
- keras和tensorflow使用fit_generator 批次训练操作
- php-fpm中max_children的配置
- python文件读取失败怎么处理
- PHP-FPM的配置与优化讲解
- python为什么会环境变量设置不成功
- keras自动编码器实现系列之卷积自动编码器操作
- PHP数字金额转换成中文大写显示
- 详解Python多线程下的list
- Python 字符串池化的前提
- PHP抽象类基本用法示例
- keras分类模型中的输入数据与标签的维度实例
- keras的三种模型实现与区别说明
- PHP智能识别收货地址信息实例