1 /*************************************************************************
2 > File Name: 27_MoreThanHalfNum.c
3 > Author: Juntaran
4 > Mail: JuntaranMail@gmail.com
5 > Created Time: 2016年08月31日 星期三 16时40分55秒
6 ************************************************************************/
7
8 #include <stdio.h>
9
10 int FindNum(int* nums, int length)
11 {
12 if (nums==NULL || length<=0)
13 return -1;
14
15 int ret = nums[0];
16 int count = 1;
17 for (int i = 0; i < length; ++i)
18 {
19 if (nums[i] == ret)
20 count ++;
21 else
22 count --;
23 if (count == 0)
24 {
25 ret = nums[i];
26 count = 1;
27 }
28 }
29
30 // 检验是否正确
31 int count2 = 0;
32 for (int i = 0; i < length; ++i)
33 {
34 if (nums[i] == ret)
35 count2 ++;
36 }
37 if (count2*2 > length)
38 return ret;
39 else
40 return -1;
41 }
42
43 int main()
44 {
45 int nums[] = {1,2,3,2,2,2,5,4,2};
46 int length = 9;
47 int ret = FindNum(nums, length);
48 if (ret == -1)
49 printf("Not Find\n");
50 else
51 printf("ret is %d\n", ret);
52
53 return 0;
54 }