数组中有一个数字出现的次数超过数组长度的一半(C、Python)
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)
数组中有一个数字出现的次数超过数组长度的一半(C、Python)的更多相关文章
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 比如输入一个长度为9的数组{1,2.3.2,2.2.5,4.2}, 因为数组中数字2出现了5次,超过数组的长度的一半,因此输出2 ...
- 《剑指offer》数组中出现次数超过数组长度一半的数字
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如 ...
- 【剑指offer】数组中出现次数超过数组长度一半的数字,C++实现
原创博文,转载请注明出处! # 题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过 ...
- 找出整数数组中出现次数超过数组长度一半的元素(Java)
Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; im ...
- 42.输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的。
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的. 这道题有很多烟雾弹: 首先如果有多对,最前面的两个数就是乘积最小的, ...
- 剑指offer42:数组和一个数字S,输出两个数的乘积最小的
1 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. ...
- 如果在num1的任何位置有一个数字的连续三倍,并且在num2中有一个数字的连续两倍,则返回1。 如果不是这样,则返回0
''' 它接受数字num1和num2,如果在num1的任何位置有一个数字的连续三倍,并且在num2中有一个数字的连续两倍,则返回1. 如果不是这样,则返回0 例子 triple_double(4519 ...
- 笔试算法题(30):从已排序数组中确定数字出现的次数 & 最大公共子串和最大公共序列(LCS)
出题:在已经排序的数组中,找出给定数字出现的次数: 分析: 解法1:由于数组已经排序,所以可以考虑使用二分查找确定给定数字A的第一个出现的位置m和最后一个出现的位置n,最后m-n+1就是A出现的次数: ...
- OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法
<span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray a ...
随机推荐
- jiagu-工具使用
比较好的一套处理工具吧,感谢作者,原文地址:https://github.com/ownthink/Jiagu 练习一下使用 """ Funciton: jiagu测试 ...
- 用eclipse开发需要准备什么?
1.到eclipse的官网上,https://www.eclipse.org/ 下载好eclipse,安装好eclipse,修改eclipse.ini文件,把内存改大点,避免出现内存溢出的情况. [ ...
- 【转】JavaScript 高性能数组去重
原文地址:https://www.cnblogs.com/wisewrong/p/9642264.html 一.测试模版 数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性 ...
- Win 10 没有 Hyper-V 解决方案
1.首先新建一个记事本文件. 2.在记事本中写入. pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.m ...
- ACM | 算法 | 快速幂
目录 快速幂 快速幂取模 矩阵快速幂 矩阵快速幂取模 HDU1005练习 快速幂 幂运算:\(x ^ n\) 根据其一般定义我们可以简单实现其非负整数情况下的函数 定义法: int Pow ( ...
- MyBatis系列(三) MyBatis 配置文件
一.properties 此标签的主要作用是引用配置文件,以数据源来举例. 新建mybatis-confing.properties配置文件 mybatis-confing.properties dr ...
- ASP.NET中App_Data等文件夹的作用
文件夹名称 文件类型 注 释 Bin .dll 包含应用程序所需的任何预生成的程序集 App_Browsers .browser 包含应用程序特有的浏览器定义文件,ASP.NET用它来识别各浏览器 ...
- C# vb .NET读取识别条形码线性条码ean-8
ean-8是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的 ...
- C# vb .net图像合成-合成矩形
在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...
- box-shadow 模糊半径与扩展半径
关于box-shadow的基本用法参阅CSS3 box-shadow一章节. 此属性用来设置元素的阴影效果,语法结构如下: box-shadow:h-shadow v-shadow blur spre ...