数组中出现次数超过一半的数字
来源:互联网 发布:像素绘画软件 编辑:程序博客网 时间:2024/05/18 04:11
#include<iostream>
using namespace std;
bool isexit;
bool is_half_array(int *buff,int length,int value)
{
int i;
int count;
count = 0;
for (i = 0; i < length; i++)
{
if (value == buff[i])
count++;
}
if (count >= length / 2)
return true;
else
return false;
}
//找到这个数字:
int find_number(int *buff, int length)
{
int i;
int value;
if (buff == NULL || length <= 0)
{
isexit = false;
return -1;
}
int count = 1;
int temp = buff[0];
for (i = 1; i < length; i++)
{
if (count == 0)
{
temp = buff[i];
}
else
{
if (buff[i] == temp)
count++;
else
count--;
}
}
if (!is_half_array(buff,length,temp))
{
isexit = false;
return -1;
}
return temp;
}
//测试程序:
int main()
{
int buff[] = { 1, 5, 6, 1, 1, 2, 1, 2, 1 };
int num = sizeof(buff) / sizeof(buff[0]);
isexit = true;
int value = find_number(buff, num);
if (isexit)
{
cout << value << endl;
}
else
cout << "-1" << endl;
return 0;
}
using namespace std;
bool isexit;
bool is_half_array(int *buff,int length,int value)
{
int i;
int count;
count = 0;
for (i = 0; i < length; i++)
{
if (value == buff[i])
count++;
}
if (count >= length / 2)
return true;
else
return false;
}
//找到这个数字:
int find_number(int *buff, int length)
{
int i;
int value;
if (buff == NULL || length <= 0)
{
isexit = false;
return -1;
}
int count = 1;
int temp = buff[0];
for (i = 1; i < length; i++)
{
if (count == 0)
{
temp = buff[i];
}
else
{
if (buff[i] == temp)
count++;
else
count--;
}
}
if (!is_half_array(buff,length,temp))
{
isexit = false;
return -1;
}
return temp;
}
//测试程序:
int main()
{
int buff[] = { 1, 5, 6, 1, 1, 2, 1, 2, 1 };
int num = sizeof(buff) / sizeof(buff[0]);
isexit = true;
int value = find_number(buff, num);
if (isexit)
{
cout << value << endl;
}
else
cout << "-1" << endl;
return 0;
}
0 0
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过一半的数字--百度
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 寻找数组中出现次数超过一半的数字
- 面试训练数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- C语言实现链表之单向链表(四)清空链表
- LESS 原理及使用方式
- Android 系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
- NOIP2015酱油记
- C语言实现链表之单向链表(五)头结点前插入结点
- 数组中出现次数超过一半的数字
- 一个英语学渣是如何通过英语六级的
- 编程之美-饮料供货方法整理
- Exploring ES6(Leanpub ‘15)笔记(仅目录提纲)
- 《leetCode》:Permutations
- hdu1026 Ignatius and the Princess I(bfs+路径)
- C语言实现链表之单向链表(六)删除头结点
- U盘刻录GSMS软件系统ISO文件教程
- 【DP】 HDU 3229 Jinyuetuan Puzzle