数组中有一个数字出现的次数超过数组长度的一半(C、python、java)
C语言
1 /*
2 -----------------------------------
3 动态分配需要的内存大小
4 输入数组元素的值
5 通过函数调用,传地址对数组排序
6 循环每个元素,当循环比较某个值时,如果有相等的,计数加1,比较完成后,和cn比较,如果大于cn,那么说明找到,退出循环
7 -----------------------------------
8 */
9
10 # include <stdio.h>
11 # include <malloc.h>
12
13 void findnum(int * arr, int n)
14 {
15 int i, j, count, cn;
16 count = 0;
17 cn = n/2;
18
19 for (i=0; i<n; i++) //双重for循环,统计元素个数
20 {
21 for (j=0; j<n; j++)
22 {
23 if (arr[i] == arr[j])
24 count++;
25 }
26
27 if (count > cn)
28 {
29 printf("超过长度一半的数字是:%d\n", arr[i]);
30 break;
31 }
32 else if (i==n-1)
33 {
34 printf("无超过长度一半的数字!\n");
35 break;
36 }
37 count = 0;
38 }
39 return;
40 }
41
42 int main(void)
43 {
44 int len, i;
45 int * pArr;
46 char ch;
47
48 do {
49
50 printf("请输入数字个数:");
51 scanf("%d", &len); //输入元素个数
52 printf("请输入%d个数字(以空格分隔):", len);
53 pArr = (int *)malloc(sizeof(int)*len); //动态分配内存
54 for (i=0; i<len; i++) //输入值
55 scanf("%d", &pArr[i]);
56 printf("动态数组元素为:\n");
57 for (i=0; i<len; i++) //输出值
58 printf("%d ", pArr[i]);
59 printf("\n");
60
61 findnum(pArr, len); //调用查找函数
62 free(pArr); //释放动态分配的内存
63
64 printf("\n你想继续么(Y/N):"); //询问是否继续
65 flushall(); //清除缓存
66 scanf(" %c", &ch);
67 //printf("%c\n", ch);
68
69
70 }while ('y'==ch || 'Y'==ch); //如果输入的是Y或者y,表示继续
71
72 return 0;
73 }
74
75 /*
76 在Vc++6.0中的输出结果为:
77 -----------------------------------
78
79 请输入数字个数:5
80 请输入5个数字(以空格分隔):1 2 3 4 5
81 动态数组元素为:
82 1 2 3 4 5
83 无超过长度一半的数字!
84 你想继续么(Y/N):y
85 请输入数字个数:5
86 请输入5个数字(以空格分隔):1 1 1 2 3
87 动态数组元素为:
88 1 1 1 2 3
89 超过长度一半的数字是:1
90 你想继续么(Y/N):n
91 Press any key to continue
92
93 -----------------------------------
94 */
Python
li = [1,2,3,4,5,2,2,2,2,2]
def findn(li):
for i in li:
if li.count(i)>len(li)/2:
return i
n = findn(li)
print(n)
java:两种方法
https://www.cnblogs.com/uncleyong/p/15828510.html
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!

浙公网安备 33010602011771号