京东笔试 购物单

大神指点一下购物单的那个题
我的代码如下,但是提示错误,求指点
package com.newCoder;

import java.util.*;

/**
 * Created by monian on 2016/9/5.
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] moneyArray;
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int m = sc.nextInt();

            if (n < m) {
                // 如果数据不满足,则输出0并进入下一个用例判断
                System.out.print("0 0");
                continue;
            }

            moneyArray = new int[n];
            for (int i = 0; i < n; i++) {
                moneyArray[i] = sc.nextInt();
            }

            Arrays.sort(moneyArray);

            Map<String, Integer> timesMap = new HashMap<>();
            String thing;
            Integer times;
            for (int i = 0; i < m; i++) {
                thing = sc.next();
                times = timesMap.get(thing);
                if (times == null) {
                    times = 0;
                }
                times++;
                timesMap.put(thing, times);
            }

            int[] timesArray = new int[timesMap.size()];
            int i = 0;
            for (Map.Entry<String, Integer> entry : timesMap.entrySet()) {
                timesArray[i++] = entry.getValue();
            }

            Arrays.sort(timesArray);

            int min = judgeMin(moneyArray, timesArray);

            int max = judgeMax(moneyArray, timesArray);
            System.out.println(min + " " + max);
        }
    }

    // 计算最高价格
    private static int judgeMin(int[] moneyArray, int[] timesArray) {
        int result = 0;
        int length = moneyArray.length;
        for (int i = 0; i < timesArray.length; i++) {
            result += timesArray[i] * moneyArray[length-1-i];
        }
        return result;
    }

    // 计算出最低的价格
    private static int judgeMax(int[] moneyArray, int[] timesArray) {
        int result = 0;
        for (int i = 0; i < timesArray.length; i++) {
            result += timesArray[i] * moneyArray[i];
        }
        return result;
    }
}
#Java工程师#
全部评论
import java.util.*; public class Main { public static void main(String aegs[]) { Scanner sc = new Scanner(System.in); int n, m; int[] val = new int[1001]; while (sc.hasNext()) { n = sc.nextInt(); m = sc.nextInt(); for (int i = 0; i < n; ++i) { val[i] = sc.nextInt(); } Map<String, Integer> mp = new <String, Integer>HashMap(); String name; for (int i = 0; i < m; ++i) { name = sc.next(); int num = mp.getOrDefault(name, 0) + 1; mp.put(name, num); } Arrays.sort(val, 0, n); List<Integer> list = new ArrayList<Integer>(mp.values()); int size = list.size(); Integer[] array = (Integer[])list.toArray(new Integer[size]); Arrays.sort(array); int max = 0, min = 0; int i = 0; for (Integer num : array) { max += val[n - size + i] * num; if (size - 1 - i >= 0) { min += num * val[size - 1 - i]; } i++; } System.out.println(min + " " + max); } } } 感觉你们写的都好长。
点赞 回复 分享
发布于 2016-09-06 01:17
public static void main(String[] args) { int n,m; Scanner reader = new Scanner(System.in); while(reader.hasNextLine()){ n = reader.nextInt(); m = reader.nextInt(); if(n>=1 && m<=1000){ int[] arr = new int[n]; int i = 0; while(i < n){ int temp = reader.nextInt(); if(temp <= 100000){ arr[i] = temp; i++; } } sortArr(arr); reader.nextLine(); String[] things = new String[m]; int j = 0; while(j < m){ String temp = reader.nextLine(); if(!temp.equals("") && temp.length()<=32){ things[j] = temp; j++; } } int minR = 0,maxR = 0; Map<String,Integer> hashMap = new HashMap<String,Integer>(); for (String string : things) { if(hashMap.containsKey(string)){ int tmp = hashMap.get(string); tmp++; hashMap.put(string, tmp); }else{ hashMap.put(string, 1); } } int count = hashMap.size();//多少种类 Collection<Integer> list = hashMap.values(); int[] arrCount = new int[count]; int y = 0; for (Integer it : list) { arrCount[y++] = it; } sortArr(arrCount); int x = arr.length - 1; for(int l = arrCount.length - 1;l>=0;l--){ maxR += arrCount[l] * arr[x--]; } x = 0; for(int l = arrCount.length - 1;l>=0;l--){ minR += arrCount[l] * arr[x++]; } System.out.println(minR + " " +maxR); } } } public static void sortArr(int[] arr){ for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } } 笔试的写的有点乱。。。变量也是乱命名的。。。还有,才接触java的我居然没找到java自带的排序方法。。。还自己sb的写了个最简单的冒泡排序用。。。
点赞 回复 分享
发布于 2016-09-06 00:02
if (n < m) { // 如果数据不满足,则输出0并进入下一个用例判断 System.out.print("0 0"); continue; } 可能是这句有问题吧,因为同一个商品可以买多种,第二个测试用例里就买了两个orange,所以n是可以小于m的
点赞 回复 分享
发布于 2016-09-06 13:01
//京东购物单 import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub       Scanner sc=new Scanner(System.in);       while(sc.hasNext()){      int n=sc.nextInt();//表示价签的数      int m=sc.nextInt();//表示物品的数      int i,j,k;      if(n<1||m<1||n>1000||m>1000)               continue;      int[] price=new int[n];      for(i=0;i<n;i++)      price[i]=sc.nextInt();      String[] shangpin=new String[m];      for(i=0;i<m;i++)      shangpin[i]=sc.next();      Arrays.sort(price);//从小到大进行排序   Map<String, Integer> map=new LinkedHashMap<>();//放入的顺序不会乱         for(i=0;i<m;i++){      if(map.containsKey(shangpin[i]))      map.put(shangpin[i], map.get(shangpin[i])+1);     else map.put(shangpin[i], new Integer(1));      }       Collection<Integer> coll=map.values();       Iterator<Integer > it=coll.iterator();        int[] val=new int[coll.size()];        i=0;        while(it.hasNext())        {  val[i]=it.next();           i++;//将对应商品出现的次数放到val数组中           }       Arrays.sort(val);//从小到大进行排序       int low=0,high=0;       for(k=val.length-1,j=0;k>=0;k--,j++)       low+=val[k]*price[j];       for(k=val.length-1,j=price.length-1;k>=0;k--,j--)       high+=val[k]*price[j];       System.out.println(low+" "+high);   } } }
点赞 回复 分享
发布于 2016-09-06 09:43
是不是scanner在扫描中会把回车当成一个返回值
点赞 回复 分享
发布于 2016-09-05 23:10
计算最高价格不对吧,应该用最大次数乘以最大价格
点赞 回复 分享
发布于 2016-09-05 22:31

相关推荐

认真搞学习:这个真喷不了,你是我见过最美的牛客女孩
点赞 评论 收藏
分享
03-29 14:19
门头沟学院 Java
你背过凌晨4点的八股文么:加油同学,人生的容错率很高,只是一个暑期罢了,后面还有很多机会!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务