数组中超过一半的数

int NumberAppearMoreThanOneHalf(vactor numbers)
{
if (numbers.empty==0)
{
return 0;
}

map<int, int> m;
for(int i=0; i<numbers.size(); ++i)
{
    ++m[numbers[i]];
}

for(auto member:m)
{
    int size = numbers.size();
    if(member.second > size/2)
    {
        return member.first;
    }
}
return 0;

}

原文地址:https://www.cnblogs.com/xjyxp/p/11451741.html

时间: 2024-10-19 20:24:31

数组中超过一半的数的相关文章

求出数组中超过一半的数

Tango 是微软亚洲研究院的一个试验项目.研究院的员工和实习生们都很喜欢在 Tango上面交流灌水.传说,Tango 有一大"水王",他不但喜欢发贴,还会回复其他 ID 发的每个帖子.坊间风闻该"水王"发帖数目超过了帖子总数的一半.如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的 ID 也在表中,你能快速找出这个传说中的 Tango 水王吗? 思路:首先想到的是一个最直接的方法,我们可以对所有 ID 进行排序.然后再扫描一遍排好序的 ID 列表,统

输出 一维数组中最大的数+数组遍历

1 //将数组中最大的数输出 2 //数组遍历 3 int[] arr = new int[]{2,4,1,6,10,11}; 4 System.out.println("输出一维数组 :"); 5 for(int i=0; i<arr.length;i++) 6 { 7 System.out.print(arr[i]+" "); 8 } 9 10 System.out.println(); 11 12 int max = arr[0]; 13 for(int

javascript 找出数字数组中最大的数

找出数字数组中最大的数 var Match = (function(){ var arr = null; var len = 0; return { max:function(arr,len){ arr = arr; len = arr.length; var newArr = arr.sort(); return newArr[len-1]; } } })(); var maxCount = Match.max([3,4,5,11,3,4,55,67,88,33]); console.log(

JS案例之8——从一个数组中随机取数

近期项目中遇到一个需求,从一个列表中随机展示列表的部分内容,需求不大,JS也非常容易实现.主要是运用到了Math对象的random方法,和Array的splice方法. 思路是先新建一个数组,存放所有的列表,然后算出随机数,从数组中取出这个随机索引对应的值,然后组成一个随机数组. 源代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" Conten

【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?

如何使用异或(XOR)运算找到数组中缺失的数? 今天给大家分享一篇关于使用XOR(异或)运算找到数组中缺失的数的问题. 在一次Javascript面试中,有这么一个问题: 假设有一个由0到99(包含99)的整数组成的长度为100的数组.从数组中随机移除一个元素,得到了一个长度为99的数组,那么请问如何找到所取出的数字是几?(假设数组未排序). 大多数面试者都是按照如下方法解答的: 首先对数组进行排序,然后遍历一遍数组,检查数组中相邻两项的的差,如果差大于1,则找到缺失的数字. 这是一种有效的算法

Leetcode 532.数组中的K-diff数对

数组中的K-diff数对 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对.这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k. 示例 1: 输入: [3, 1, 4, 1, 5], k = 2 输出: 2 解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5). 尽管数组中有两个1,但我们只应返回不同的数对的数量. 示例 2: 输入:[1, 2, 3, 4, 5], k =

程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】

转!http://blog.csdn.net/dabusideqiang/article/details/38271661 11.求旋转数组的最小数字 题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素. 分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1.这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组

数组中超过一半的数字 2.3

两种方法,一个是基于快排的partition函数,但这种存在一个问题,如果数组{1,1,1,1,1,1,2,3,4,5,6},这样的话,partition返回的数字为2所对应的index ? ? 所以这种方法需要添加一个判定数组中是否存在超过一半数字的数 ? ? 另外一种是,首先认为第一个数就是我们想找的,设置一个time,初始为1,然后遍历后面的数,如果与这个数相同,那么time++,不同则time--,time减到0时,将这个数换成当前数,并将time置为1,再往后遍历 ? ? 同样应该判定

51、数组中重复的数

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2. https://www.nowcoder.com/practice/623a5ac0ea5b4e5f95552655361ae0a8?tpId=13&tqId=11203&tPage=3&rp=2&ru=