在某商场的监控记录中,民警正在调查一起盗窃案件,记录下了嫌疑人的出现次数。给定一个嫌疑人编号数组 men
,其长度在2到999之间,每个编号在1到100000之间。民警需要确定是否存在某个嫌疑人,其出现次数超过所有嫌疑人总出现次数的一半,并输出该嫌疑人的编号。如果没有任何嫌疑人满足该条件,则返回0。例如,输入 1,2,3,2,2
时,输出为2;而输入 1,1,2,2,3,3
时,输出为0。
使用哈希表统计每个元素出现的次数
getline
从标准输入读取一整行字符串,并使用 stringstream
按照逗号分隔这些字符串,将其转换为整数并存储到 nums
向量中。民警侦办某商场店面盗窃率时,通过人脸识别针对嫌局人讲行编号1-100000。现在民警在监控记录中发现有个嫌疑人在被动店面出现的次数超过了所有嫌疑人总出现次数的一半,请帮助民警尽可能高效的找到该嫌疑人的编号。
解答要求
时间限制:C/C++ 1500ms,其他语言:3000ms
内存限制:C/C++ 32MB, 其他语言:64MB
输入
给定一个嫌疑人的标号数组men,其中1<length(men)<1000,嫌人编号满足1<=men[i]<=100000
输出
返回出现次数超过一半的嫌疑人的编号。如果总次数是偶数,例如4,则需要超过2次即最少3次,如果总次数是奇数,例如5,则需要超过2.5,满足条件最少是3次。若没有嫌疑人满足该条件,返回0
样例1
输入
1,2,3,2,2
输出
2
解释
第一行是嫌疑人出现记录,代表1号和3号嫌疑人出现一次,2号嫌疑人出现3次
因为2号嫌疑人出现3次,超过5次的一半,因此2号嫌疑人即为需要寻找的编号,输出2
样例2
输入
1,1,2,2,3,3
输出
0
解释
第一行是嫌疑人出现记录,代表1号、2号和3号嫌疑人各出现2次因为各个嫌疑人均只出现2次,未超过6次的一半,因此没有嫌疑人满足要求,输出0