(京东在线笔试编程题)关于证券委托的一道题
来源:互联网 发布:linux cmd 编辑:程序博客网 时间:2024/06/09 23:48
题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息。
n、s、B、S
其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入、S代表卖出,S条卖出按照从小到大,买入按照从大到小。
输出:
6 2
B 50 2
S 50 1
S 20 2
S 30 1
B 40 4
B 50 6
输出:
B 50 8
B 40 4
S 20 2
S 30 1
(备注:6代表委托信息的个数、2代表表示买入和卖出委托信息各返回2个 ,其中每行如“B 50 2",第一个字段B代表买入,S代表卖出,50代表价格,最后一个字段代表数量)
思路:排序,合并同类型,然后输出。
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNextInt()){int N=sc.nextInt();int M=sc.nextInt();List<TS> list1=new ArrayList<TS>();List<TB> list2=new ArrayList<TB>();for(int index=0;index<N;index++){String type=sc.next();int price=sc.nextInt();int num=sc.nextInt();if(type.equals("S")){TS t=new TS(type,price,num);list1.add(t);}else{TB t=new TB(type,price,num);list2.add(t);}}List<TS> listrs=new ArrayList<TS>();List<TB> listrb=new ArrayList<TB>();Collections.sort(list1);// 排序if(list1.size()>0){//合并相同类型listrs.add(list1.get(0));int count=0;for(int i=1;i<list1.size();i++){if(list1.get(i).price==list1.get(i-1).price){listrs.get(count).num+=list1.get(i).num;}else{listrs.add(list1.get(i));count++;}}}Collections.sort(list2);//如上操作if(list2.size()>0){listrb.add(list2.get(0));int count=0;for(int i=1;i<list1.size();i++){if(list2.get(i).price==list2.get(i-1).price){listrb.get(count).num+=list2.get(i).num;}else{listrb.add(list2.get(i));count++;}}}if(listrs.size()<M){for(int i=0;i<listrs.size();i++){System.out.print(listrs.get(i).type+" "+listrs.get(i).price+" "+listrs.get(i).num);System.out.println();}}else{for(int i=0;i<M;i++){System.out.print(listrs.get(i).type+" "+listrs.get(i).price+" "+listrs.get(i).num);System.out.println();}}if(listrb.size()<M){for(int i=0;i<listrb.size();i++){System.out.print(listrb.get(i).type+" "+listrb.get(i).price+" "+listrb.get(i).num);System.out.println();}}else{for(int i=0;i<M;i++){System.out.print(listrb.get(i).type+" "+listrb.get(i).price+" "+listrb.get(i).num);System.out.println();}}}}}class TB implements Comparable<TB>{String type;int price;int num;public TB(String t,int p,int n){this.type=t;this.price=p;this.num=n;}public int compareTo(TB t){if(this.price>t.price){return -1;}else if(this.price<t.price){return 1;}else{return 0;}}}class TS implements Comparable<TS>{String type;int price;int num;public TS(String t,int p,int n){this.type=t;this.price=p;this.num=n;}public int compareTo(TS t){if(this.price>t.price){return 1;}else if(this.price<t.price){return -1;}else{return 0;}}}
0 0
- (京东在线笔试编程题)关于证券委托的一道题
- 2015腾讯在线笔试的一道编程题
- 亚马逊2013的一道在线笔试题
- indeed一道在线笔试题
- 笔试编程题一道
- 关于位运算的一道笔试题
- 一道关于字符串逆序的笔试题
- 分享一道关于素数的笔试题
- 一道关于this的笔试题
- 关于密码破解的一道笔试题
- 关于一道阿里巴巴笔试题的思考
- 关于创新工场的一道笔试题
- 一道关于字符查找的笔试题
- 关于mysql语句的一道笔试题
- 一道关于绑鞋带的笔试题
- 一道关于内存分配的笔试题
- 一道关于绑鞋带的笔试题
- 一道关于fork的笔试题
- STL之优先队列
- 10g crs 启动报错的记录
- JVM从加载到结束流程
- 创业公司和大公司的差异
- 检测到ContextSwitchDeadlock解决方法
- (京东在线笔试编程题)关于证券委托的一道题
- 经典排序算法总结与实现
- 浅析Java中的final关键字
- XML
- hdoj 5501The Highest Mark【贪心+0-1背包】
- Pull Request工作流
- Debugging Android Java framework services using Eclipse
- ssl1613最短路径问题
- 2304: Lights Out(枚举)