PAT乙級——1092(陣列排序 自定義sort)Java實現
題目:最好吃的月餅 (20 分)
月餅是久負盛名的中國傳統糕點之一,自唐朝以來,已經發展出幾百品種。
若想評比出一種“最好吃”的月餅,那勢必在吃貨界引發一場腥風血雨…… 在這裡我們用數字說話,給出全國各地各種月餅的銷量,要求你從中找出銷量冠軍,認定為最好吃的月餅。
輸入格式:
輸入首先給出兩個正整數 N(≤1000)和 M(≤100),分別為月餅的種類數(於是預設月餅種類從 1 到 N 編號)和參與統計的城市數量。
接下來 M 行,每行給出 N 個非負整數(均不超過 1 百萬),其中第 i 個整數為第 i 種月餅的銷量(塊)。數字間以空格分隔。
輸出格式:
在第一行中輸出最大銷量,第二行輸出銷量最大的月餅的種類編號。如果冠軍不唯一,則按編號遞增順序輸出並列冠軍。數字間以 1 個空格分隔,行首尾不得有多餘空格。
輸入樣例:
5 3
1001 992 0 233 6
8 0 2018 0 2008
36 18 0 1024 4
輸出樣例:
2018
3 5
題目分析及實現
未AC
題目不難,就是簡單的陣列操作,不過排序要自己定義,但是總時長只有200ms,java語言會超時,這個我優化了好幾次沒找到解決辦法。
PAT還是一如既往的對java不友好,近幾年的題目400ms已經很常見了,java表現好點了,但是這種還是沒有辦法。
如有更好的解題辦法希望留言告訴我,跪謝 -_-!
//兩個超時,15分
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String one = in.readLine();
String two[] = one.split(" ");
int N = Integer.parseInt(two[0]);
int M = Integer.parseInt(two[1]);
Count[] counts = new Count[N];
for (int i = 0; i < N; i++) {
counts[i] = new Count();
counts[i].index = i + 1;
}
String[] input = new String[M];
for (int i = 0; i < M; i++) {
input[i] = in.readLine();
}
in.close();
//累加計算每個種類的銷售量
for (int i = 0; i < M; i++) {//行
String[] temp = input[i].split(" ");
for (int j = 0; j < N; j++) {//列
counts[j].count += Integer.parseInt(temp[j]);
}
}
Arrays.sort(counts);//按照自定義的排序規則排列
System.out.println(counts[0].count);
System.out.print(counts[0].index);
int last = counts[0].count;
for (int i=1;i<counts.length;i++) {
if (last == counts[i].count) {//若與前面的值相等,則輸出
System.out.print(" ");
System.out.print(counts[i].index);
}else
break;
}
}
}
class Count implements Comparable<Count> {
int index;
int count;
public int compareTo(Count p) {
int result = this.count - p.count;
if (result != 0)
return -result;//從大到小排列
else {
return this.index - p.index;//從小到大排列
}
};
}
相關文章
- Javascript陣列排序sort方法和自定義排序方法JavaScript陣列排序
- PAT乙級——1093(字串匹配)Java實現字串匹配Java
- js:陣列自定義排序JS陣列排序
- PAT-B 1092 最好吃的月餅【陣列】陣列
- PAT 乙級
- 1122. 陣列的相對排序(計數排序 / 自定義排序)陣列排序
- PAT乙級1023
- 【轉】堆排序Heap Sort——Java實現排序Java
- 使用sort方法實現陣列升序降序陣列
- 陣列排序的實現陣列排序
- PAT1008 陣列元素迴圈右移問題(java實現)陣列Java
- 【PAT乙級】1027 列印沙漏
- 【PAT乙級】1017 A除以B
- JavaScript中陣列Array.sort()排序方法詳解JavaScript陣列排序
- PHP 實現按奇偶排序陣列PHP排序陣列
- 【PAT乙級】1065 單身狗
- 【PAT乙級】1052 賣個萌
- 【PAT乙級】1048 數字加密加密
- 【PAT乙級】1066 影像過濾
- Java 列表元素自定義排序Java排序
- Java 對映 自定義排序Java排序
- 關於js陣列方法sort()負數排序的陷阱JS陣列排序
- 使用Guava的ComparisonChain實現自定義的排序GuavaAI排序
- Arr::sort()輔助函式對多維陣列的排序函式陣列排序
- 【演算法-初級-陣列】刪除排序陣列中的重複項(多語言版實現)演算法陣列排序
- JavaScript 使用sort()方法從數值上對陣列進行排序JavaScript陣列排序
- 【PAT乙級】1021 個位數統計
- PAT-A Java實現Java
- PAT1092 最好吃的月餅
- JAVA Comparator 自定義排序 原始碼分析Java排序原始碼
- .NET 排序 Array.Sort<T> 實現分析排序
- pat乙級自我回顧:一般錯誤出現原因
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- Leetcode每日一題:992.sort-array-by-parity-ii(按奇偶排序陣列Ⅱ)LeetCode每日一題排序陣列
- 陣列排序陣列排序
- PAT乙級 | 1086 就不告訴你 (15分)
- Java中使用lambda表示式自定義排序Java排序
- 在命令列用 sort 進行排序命令列排序