数组中出现次数超过一半的数字
来源:互联网 发布:有没有电话淘宝卖家 编辑:程序博客网 时间:2024/05/19 11:34
题目描述:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
解题思路:
将数组按大小排序,若存在数字出现次数超过数组长度的一般,则数组中位数必定为该数字 。
(1)将数组排序完成后,取array的中位数,与数组其他数字比较大小每重复一次,计步器loopNum加一
(2)判断loopNum是否大于数组长度的一半。true时,返回array中位数;false时,返回0。
实际代码:
public int MoreThanHalfNum_Solution(int [] array) { if (array.length==0) return 0; //数组长度为0时,return 0; if (array.length==1) return array[0]; //数组长度为1时,return array[0]; int n = array.length; int m = array.length; int loopNum=0; boolean find =false; for (int i = 0; i < n; i++) { for (int j = 0; j < n-1; j++) { if (array[j] > array [j+1]) { int num = array[j]; array[j] = array[j+1]; array[j+1] = num; } } n--; //每遍历一次后,第二次遍历数组长度-1; } //排序 for (int i = 0; i < array.length; i++) { if (array[m/2]==array[i]) loopNum++; //将数组中位数与数组中每一个数组比较。重复后loopNum+1; if (loopNum>m/2) find =true; //判断 } if (find) { return array[m/2]; }else { return 0; } //return }}
0 0
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过一半的数字--百度
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 寻找数组中出现次数超过一半的数字
- 面试训练数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- JDK 源码解析 —— CyclicBarrier
- SmsManager
- 解决rxjava导致的内存泄漏
- 用 npm scripts 来构建前端项目的尝试
- hive字符串函数
- 数组中出现次数超过一半的数字
- Android ADT更新出现问题的解决办法
- 有限状态机与行为树的C++学习与实践
- leetcode 319 Bulb Switcher
- 八皇后问题之二
- mysql 多表 update sql语句总结
- Python的randrange函数
- Linux CentOS6.5下编译安装MySQL 5.6.16
- php判断文件存在是用file_exists 还是 is_file