京东研发类-编程题-买水果

Posted 静静静流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了京东研发类-编程题-买水果相关的知识,希望对你有一定的参考价值。

笔试的时候,没有考虑到购买多样水果的时候,每样水果的重复次数,因此没能AC。

现改正,测试了几个用例。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
                String[]s1 = sc.nextLine().split(" ");
                //价格数目
                int n = Integer.valueOf(s1[0]);
                //物品数目
                int m = Integer.valueOf(s1[1]);
                String[]prices = sc.nextLine().split(" ");
                int[]p = new int[n];
                for(int i=0;i<prices.length;i++){
                  p[i] = Integer.valueOf(prices[i]);
                }
                String[]goods = new String[m];
                HashMap<String,Integer> hm = new HashMap<String,Integer>();
                for(int i=0;i<m;i++){
                    goods[i] = sc.nextLine();
                    if(hm.containsKey(goods[i]))
                        hm.put(goods[i],hm.get(goods[i])+1);
                    else
                        hm.put(goods[i],1);
                }
                Arrays.sort(p);
                int max=0,min=0;
                int[]arr = new int[hm.size()];
                int ind=0;
                Iterator it = hm.entrySet().iterator();
                while(it.hasNext()){
                    Map.Entry entry = (Map.Entry) it.next();
                    arr[ind++] = (int)entry.getValue();
                }
                Arrays.sort(arr);
                for(int i=0;i<hm.size();i++){
                    min += p[i]*arr[hm.size()-1-i];
                }
                for(int i=0;i<hm.size();i++){
                    max += p[p.length-1-i]*arr[hm.size()-1-i];
                }
                System.out.println(min+" "+max);
        }
    }

 

以上是关于京东研发类-编程题-买水果的主要内容,如果未能解决你的问题,请参考以下文章

2016 京东校招研发算法题 9.6

水果店买水果系统

TiD精彩回顾| 京东商城代码质量平台建设实践

[编程题] 独立的小易 网易2018

网易机器学习算法工程师笔试编程题

Android-Java-接口Interface