题目:

数组中有一个数字出现的次数超过数组长度的一半。请找出这个数字。

解答:

 1 public class Solution {
 2
 3     public int MoreThanHalfNum_Solution(int [] array) {
 4         if(array == null || array.length == 0) {
 5             return 0;
 6         }
 7
 8         int result = array[0];
 9         int count = 1;
10
11         for(int i = 1; i < array.length; i++) {
12             if(count == 0) {
13                 result = array[i];
14                 count = 1;
15             } else if(array[i] == result) {
16                 count++;
17             } else {
18                 count--;
19             }
20         }
21
22
23         if(isHalf(array, result)) {
24             return result;
25         } else {
26             return 0;
27         }
28
29     }
30
31     private static boolean isHalf(int[] array, int num) {
32         int count = 0;
33
34         for(int i = 0; i < array.length; i++) {
35             if(array[i] == num) {
36                 count++;
37             }
38         }
39
40         if(count > array.length / 2) {
41             return true;
42         } else {
43             return false;
44         }
45     }
46 }

转载于:https://www.cnblogs.com/wylwyl/p/10373932.html

数组中有一个数字出现的次数超过数组长度的一半相关推荐

  1. 统计数组中每个数字出现的次数_剑指Offer(二十八) 数组中次数出现超过一半的数字...

    题目描述 思路与解析 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长 ...

  2. 【编程题目】输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。...

    第 14 题(数组): 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字. 要求时间复杂度是 O(n).如果有多对数字的和等于输入的数字,输出任意 ...

  3. 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。

    原文转自:http://blog.csdn.net/u013322907/article/details/38300711 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们 ...

  4. 【leetcode】给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff数对。

    给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对.这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k ...

  5. 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总的一半。请帮小明找到该红包金额。

    春节期间小明使用微信收到很多个红包,非常开心.在查看领取红包记录时发 某个红包金额出现的次数超过了红包总的一半.请帮小明找到该红包金额.写出具体算法思路和代码实现,要求算法尽可能高效.给定一个红包的金 ...

  6. 在数组中寻找出现次数超过数组长度一半的数

    春节期间小明使用微信收到很多个红包,非常开心.在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半.请帮小明找到该红包金额.写出具体算法思路和代码实现,要求算法尽可能高效. 给定一个红 ...

  7. c语言++数组名【数字】_C ++程序在数组中打印所有非重复数字

    c语言++数组名[数字] Problem statement: Write a C++ program to print all the non-repeated numbers in an arra ...

  8. php将数组最后一个单元弹出,php array_pop()数组函数将数组最后一个单元弹出(出栈)...

    /*函数array_pop():将数组最后一个单元弹出(出栈) * 1.语法:mixed array_pop ( array &array ) * 2.描述: 弹出并返回 array 数组的最 ...

  9. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

最新文章

  1. 分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析
  2. 软工作业 5:词频统计——增强功能
  3. Mac下sublime text2 解决中文乱码
  4. SAP RETAIL 通过分配表创建UB STO单据
  5. Spring - Java/J2EE Application Framework 应用框架 第 10 章 使用JDBC进行数据访问
  6. 在CentOS上安装FFMPEG和Gstream-ffmpeg
  7. 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
  8. 如何在Hibernate中维护表的历史记录
  9. 晶体管电路设计.铃木雅臣
  10. 小程序苹果手机底部出现横杠处理
  11. matplotlib多张子图画在一起
  12. pd.to_datetime函数函数获取相应时间维度指标(isocalendar函数用法)
  13. Uber Go 语言编程规范:使用 go.uber.org/atomic
  14. 新一代iPad mini曝光:屏幕变大、颜值大幅提升!
  15. DB DBMS SQL 分别是什么?
  16. oracle ORA-28002:the password will expire within 7 days 解决方法
  17. 几种典型的立体匹配算法
  18. 服务器安装嵌入式系统,嵌入式设备连接云服务器
  19. 一个男人最高的品味就是他选择的女人
  20. C#在Excel与Word中写入上角标与下角标

热门文章

  1. java soap 头_如何将java头添加到java中的soaprequest
  2. 拷贝依赖_还不懂零拷贝(Zero-Copy)?怎么称得上高级程序员
  3. java在线编译器_什么是Java内存模型
  4. php写poc,xray写POC踩坑
  5. 【springboot】禁用特定AutoConfiguration/自动配置类
  6. mysql 5.5 不认识 datetime(0) 类型
  7. 【mysql】table中添加列
  8. python 数字证书模拟登录_用于生成WebService使用的数字证书及签署证书.python脚本...
  9. Windows环境下MySQL 5.7的安装、配置与卸载
  10. 怎么修改存储路径_Power Query数据位置变了?利用参数轻松解决源文件路径问题...