标签:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
记得最后要判断一下count是否大于n/2.
若求n/3的数,则可用num1,num2来判断,当number[i]与num1、2都不相同时--;详情参考leetcode
1 class Solution { 2 public: 3 int MoreThanHalfNum_Solution(vector<int> numbers) { 4 if(numbers.empty()) return 0; 5 int n=numbers.size(); 6 int num=0; 7 int count=0; 8 for(int i=0;i<n;i++){ 9 if(num==numbers[i]) 10 count++; 11 else if(count==0){ 12 num=numbers[i]; 13 count++; 14 } 15 else 16 count--; 17 } 18 count=0; 19 for(int i=0;i<n;i++){ 20 if(num==numbers[i]) 21 count++; 22 } 23 if(count>n/2) 24 return num; 25 else 26 return 0; 27 } 28 };
标签:
原文地址:http://www.cnblogs.com/zl1991/p/4773840.html