n个数里出现次数大于等于n/2的数
来源:互联网 发布:xp网络共享打印机设置 编辑:程序博客网 时间:2024/06/03 21:31
很简单的一道编程题,在这分享一下我的思路,由于技术能力一般,如有不足请大家指出,共同进步。题目描述:输入n个整数,输出出现次数大于等于数组长度一半的数。 输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。输入例子:3 9 3 2 5 6 7 3 2 3 3 3输出例子:3我的思路:首先输入n个数,由于这里没有给定n,所以我用一个字符串来存储这n个数。然后将输入的字符串转化成数字。这里主要是转化,我是将字符串从后向前转化,因为字符串和数字的ASCII码相差48,所以将字符串减去48即可得到数字。这里还要注意字符串“123”转化为数字应该是1*100+2*10+3*1。
代码:
#include <iostream>#include <string.h>#include <math.h>using namespace std;int main(){ char str[202]; int a[101];//存储数字,这里可以进行动态开辟数组 gets(str); int len = strlen(str); int i,j=0; for(i=len-1;i>=0;) { int sum=0; int ling = -1;//判断个、十、百...位 int flag = 0; while(str[i]!=' ' && i>=0){ if(str[i]!='-') { ling++; sum+=(str[i]-48)*pow(10,ling); } else{ flag = 1; } i--; } if(flag) a[j] = sum*(-1); else a[j] = sum; j++; i--; } for(i=0;i<j;i++) { int account= 1; int number; for(int k=i+1;k<j;k++) { if(a[i]==a[k]) { account++; number = a[k]; } } if(account>=j/2){ cout<<number; break; } } return 0;}
0 0
- n个数里出现次数大于等于n/2的数
- n个数里出现次数大于等于n/2的数
- 好未来:n个数里出现次数大于等于n/2的数
- 找出出现次数大于等于总数一半的数 (O(1)空间 O(n)时间)
- 摩尔投票法, O(n) O(1) 求出现次数大于n/2,n/3次数的数
- 《好未来编程题》 输入n个整数,输出出现次数大于等于数组长度一半的数
- 数组中找到出现次数大于N/K的数
- java 找出n个元素数组中重复次数最多的数(假设出现次数大于n/2)
- 有序数组长度为N 元素出现的长度为 大于等于 N 除 4 的最小的数
- 欧拉函数,求小于等于n 的数里与 n 互质的数的个数
- N个数中,1出现的次数
- Majority Element II 寻找数组中出现次数大于n/3的数
- 笔试面试算法经典-找到数组中出现次数大于N/k的数(Java)
- C++实现数组中找到出现次数大于N/K的数
- 数组与矩阵---在数组中找到出现次数大于一半(N/K)的数
- 将一个整数M分成N个数相加的和,要求每个数至少要大于等于1
- 在数组中找到次数大于N/K的数
- P122 第三章 16题 n个数中大于等于平均值的个数
- Gradle 错误
- 创建窗口第三步 消息循环(详解)
- 第13章 离散时间系统单位脉冲响应
- linux下面给sd卡分区 格式化
- FactSystem设计思路
- n个数里出现次数大于等于n/2的数
- 2017 JSCPC总结
- 哈夫曼编码(2017东北四省赛A题)
- LeetCode:Contains Duplicate
- 对保存数据进行月份分组显示
- MVP的框架
- Zookeeper会话
- Linux格式化命令
- JAVA中的抽象类(abstract class)