【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
来源:互联网 发布:淘宝新店怎么找淘宝客 编辑:程序博客网 时间:2024/04/29 19:03
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}, 由于数组中数字2出现了5次,超过数组的长度的一半,因此输出2
一种办法是先把数组排序,那么超过一半的元素一定是数组最中间的元素。
第二种办法比较抽象,设一个变量保存当前值,设一个次数,当前值与下一个值进行比较,如果相等,次数加一,如果不相等,次数减一,如果次数减到0了还是不相等,就把当前值替换掉。代码如下:
#include <stdio.h>#include <assert.h>int find_half(int *arr, int len){int count = 0;int cur = 0;int i = 0;assert(arr != NULL);for (; i < len; ++i){if (count == 0){cur = arr[i];count = 1;}else if (arr[i] == cur)count++;elsecount--;}return cur;}int main(){int arr[] = { 1, 2, 2, 2, 3, 2, 6, 2, 7, 2 };int len = sizeof(arr) / sizeof(arr[0]);printf("%d\n", find_half(arr, len));return 0;}
0 0
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- C++数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。(牛客剑指offer)
- 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字。
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数。java实现
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字
- C++数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 面试:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 找出数组中出现次数超过长度一半的数字
- 假设数组中有一个数字出现的次数超过了数组长度的一半,试编程找出这个数字(消除 qosrt 快速排序 哈希)
- yaml随笔记(一)
- openwrt uci常用命令
- [Unity3D]如何计算某个pixel的depth precision
- 最详细安卓ADT插件安装教程
- Serializable: 默认序列化
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- redis持久化RDB和AOF
- Facebook网络模拟测试工具ATC使用
- 安装Android SDK时,点击SDK Manager.exe闪退,并且jdk的环境变量是对的。(转载)
- 确保对象的唯一性——单例模式
- c++训练题(牵扯到大数据的保存)
- 华为OJ在线测试题--提取不重复的整数
- easypoi 更方便使用poi
- 软件易用性文章分享 ● 第一篇