京东笔试 购物单
大神指点一下购物单的那个题
我的代码如下,但是提示错误,求指点
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;
}
}
