2 shadowcw shadowcw 于 2016.03.16 22:50 提问

应该怎么用map找出次数最多的元素

例如这个题目 应该怎么做
After celebrating the midcourse the students of one of the faculties of the Berland State University decided to conduct a vote for the best photo. They published the photos in the social network and agreed on the rules to choose a winner: the photo which gets most likes wins. If multiple photoes get most likes, the winner is the photo that gets this number first.

Help guys determine the winner photo by the records of likes.

Input
The first line of the input contains a single integer n (1 ≤ n ≤ 1000) — the total likes to the published photoes.

The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 1 000 000), where ai is the identifier of the photo which got the i-th like.

Output
Print the identifier of the photo which won the elections.

Examples
input
5
1 3 2 2 1
output
2
input
9
100 200 300 200 100 300 300 100 200
output
300

4个回答

caozhy
caozhy   Ds   Rxr 2016.03.16 23:32
 #include <map>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    map<int, int> _map;
    int n = 0;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int x = 0;
        cin >> x;
        _map[x]++;
    }
    int max = 0;
    int maxval = 0;
    for (map<int, int>::iterator ltr = _map.begin(); ltr != _map.end(); ltr++)
    {
        if (ltr->second >= max)
        {
            maxval = ltr->first;
            max = ltr->second;
        }
    }
    cout << maxval;
    return 0;
}
caozhy
caozhy 回复shadowcw: 如果问题解决麻烦采纳下吧。
2 年多之前 回复
shadowcw
shadowcw 谢谢大神
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.16 23:33

帮你写了一个,休再说看不懂。

caozhy
caozhy 回复shadowcw: 点下我回答右边的采纳按钮,谢谢
2 年多之前 回复
shadowcw
shadowcw 非常感谢啊
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.16 23:17
shadowcw
shadowcw 这个博客我看过 看不懂 能力有限啊 不好意思
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2016.03.16 23:09

用元素做map的key 遍历数据 把数据做key对应的map value加一 最后统计

shadowcw
shadowcw 回复oyljerry: 那如何找到那个是第一个满足最大值的 是比较下标吗
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c++ map的使用 出现次数最多的数
问题描述   给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式   输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。   输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 输出格式   输出这n个次数中出现次数最多的数。如果这样的数有多个
java找出一个数组中出现次数最多的那个元素(用HashSet很新颖)
方法一: [java] view plain copy import java.util.*;   public class TestMain {       private static HashMap map;       public static HashMap mostEle(String[] strArray) {      
python 找出序列中出现次数最多的元素方法
words = [ 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the', 'eyes', "don't", 'look', 'around', 'the', 'eyes',
找出整型数组中重复次数最多的元素
#include #include #include using namespace std; struct number { int value; int count; }; int find(const vector v,int value) { for (int i = 0; i < v.size(); i++) { if (v[i].value == value)
找出一个列表中出现次数最多的元素
在实现knn算法中遇到的问题,如何从一个列表中找出出现次数最多元素,方法是:字典 + 字典get方法统计次数 + 字典排序找出最大。 num_list = np.random.randint(0,10,100, np.int) num_dict = {} # 统计每个元素出现的次数 for i in range(len(number)): num
java找出一个数组中出现次数最多的那个元素
方法一: import java.util.*; public class TestMain { private static HashMap map; public static HashMap mostEle(String[] strArray) { map = new HashMap(); String str = ""; int
找出数组中重复次数最多的元素
思路: 最简单的方法就是定义一个数组b把相同的元素放到对应位置,如果数组a的元素等于这个下标,那么这个下标对应的值就加1,最后找出这个数组中最大值返回下标,这个方法浪费很大空间,不推荐。新的思路:采用map,定义一个map,初始值默认为0,循环遍历数组a,把map中key值是a中此时元素的value加1,初始定义一个val假设map[val]最大,最后每次遍历都和这个值比较,如果大于这个值,那么v
java找出一个数组中出现次数最多且最大的那个元素
比如,一个数组为:[1, 1, 3, 5, 6, 6, 6, 8, 8, 9, 2, 8, 3 ]同时符合最大且次数最多的就是8。 思路:最简单的办法就是采用两层for循环去遍历,时间复杂度为O(n2),其次可以 先用快速排序将数组排序,然后再找次数最多且最大的数,时间复杂度O(NLogN), 第三种方法可以采用HashMap,这种方式时间复杂度为O(N),但是需要空间复杂度O(N) 下面
php如何找出一个数组重复次数最高的元素?
<br /><?php function getMostElements($arr) { $arr = array_count_values($arr); asort($arr); $findNum = end($arr); foreach ($arr as $k => $v) { if ($v != $findNum) { unset($arr[$k]); } } return array_keys($arr); } $testArr = array(1
HashMap 排序,按照 value,找出字符出现次数最多的
方法1static void doString(String input) { Map<Character, Integer> result = new HashMap<Character, Integer>(); for (int i = 0; i < input.length(); i++) { char key = input.charAt(i);