水題 求眾數 (hash的練習)
題目描述:
輸入20個數,每個數都在1-10之間,求1-10中的眾數(眾數就是出現次數最多的數,如果存在一樣多次數的眾數,則輸出權值較小的那一個)。
輸入描述:
測試資料有多組,每組輸入20個1-10之間的數。
輸出描述:
對於每組輸入,請輸出1-10中的眾數。
輸入樣例:
5 1 5 10 3 5 3 4 8 6 8 3 6 5 10 7 10 2 6 2
輸出樣例:
5
解題思路:
我jio得題目中最關鍵的一句話就是“每個數都在1-10之間”,就憑這句話我就jio得沒有必要用map,直接用一個大小為11的陣列來構造一個雜湊表,用這個hash表來記錄每個數出現的次數。我沒有用sort對這個陣列進行降序排列,而是用ans來記錄眾數的出現次數,for迴圈遍歷hash表,如果某個值等於ans,那麼這個值的所在下標就是眾數。
AC程式碼:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int ans = 0; //記錄眾數
int hash[11]; //記錄每個數出現的次數
memset(hash,0,sizeof(hash));
for(int i = 0; i < 20; i++)
{
int temp;
cin >> temp;
hash[temp]++;
ans = max(ans,hash[temp]);
}
for(int i = 1; i <= 10; i++)
{
if(hash[i] == ans)
{
cout << i << endl;
break;
}
}
return 0;
}
相關文章
- 3 月水題練習
- Leetcode刷題——求眾數LeetCode
- 演算法題:求眾數演算法
- 【演算法練習】(8)眾數演算法
- 求眾數
- LeetCode每日一題:求眾數(No.169)LeetCode每日一題
- 牛客練習賽27【C 水圖 dfs求最長路】
- 【leetcode】求眾數LeetCode
- 雜湊求眾數
- 演算法面試題彙總_2求眾數演算法面試題
- 每日一算--求眾數
- 【LeetCode】求眾數(四種方法)LeetCode
- LeetCode169求眾數——分治LeetCode
- LeetCode 之 JavaScript 解答第169題 —— 求眾數 I(Majority Element)LeetCodeJavaScript
- 優化的求眾數方法 - 摩爾投票演算法(演算法思想+求眾數的三種方法+摩爾投票演算法改進版求眾數 II)優化演算法
- Leetcode 169:求眾數(最詳細的解法!!!)LeetCode
- 【演算法】求眾數-js解法演算法JS
- 演算法:Majority Element(求眾數)演算法
- PHP演算法練習二:求n和指定數的絕對差PHP演算法
- 新手練習:Python練習題目Python
- 習題練習題-第二題
- 五、python的練習題Python
- NFS練習題NFS
- SQL練習題SQL
- mysql練習題MySql
- TypeScript 練習題TypeScript
- 練習題-9
- shell練習題
- Python 練習題Python
- (前++) 和 (後++)的練習題
- 方法的三個練習題
- Hive SQL必刷練習題:同時線上人數問題(*****)HiveSQL
- P5655 基礎數論函式練習題 題解函式
- 【20190326】【每天一道演算法題】求眾數(分治演算法)演算法
- 組合數學水題 $19$ 道
- 【演算法】已知必存在眾數,求該眾數 -- Boyer-Moore 投票演算法演算法
- linux練習題(二)Linux
- python練習題解析Python