博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer第五天
阅读量:5747 次
发布时间:2019-06-18

本文共 1006 字,大约阅读时间需要 3 分钟。

28.数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

解法一:利用HashMap

import java.util.HashMap;public class Solution {    public int MoreThanHalfNum_Solution(int [] array) {        HashMap
map = new HashMap<>(); int length = array.length; if(length == 1) return array[0]; //此处用于当数组只有一个元素的时候,下面的代码对该情况无效 for(int i : array){ if(map.containsKey(i)){ if(map.get(i) == length/2) return i; map.put(i,map.get(i) + 1); }else{ map.put(i,1); } } return 0; }}

解法二:利用数组特点,重复次数超过一半的数字一定大于其它数字出现次数之和

public class Solution {    public int MoreThanHalfNum_Solution(int [] array) {        if(array == null || array.length == 0) return 0;        int length = array.length;        int result = array[0];        int times = 1;        for(int i =1;i

转载于:https://www.cnblogs.com/guoyaohua/p/8407379.html

你可能感兴趣的文章
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
栈(一)
查看>>
ios 自定义delegate(一)
查看>>
创建美国地区的appleId
查看>>
例题10-2 UVa12169 Disgruntled Judge(拓展欧几里德)
查看>>
[c语言]c语言中的内存分配[转]
查看>>
JS 原生ajax写法
查看>>
day 10 字符编码和文件处理 细节整理
查看>>
如何打造亚秒级加载的网页1——前端性能
查看>>
Composer管理PHP依赖关系
查看>>
React.js学习笔记之JSX解读
查看>>
我所了解的Libevent和SEDA架构
查看>>
Socket编程问题小记
查看>>
基于Flask-Angular的项目组网架构与部署
查看>>
Rust 2018 即将到来:设法从 Rust 2015 过渡
查看>>
一张图道尽程序员的出路
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
烂泥:kvm安装windows系统蓝屏
查看>>