小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第028道剑指offer算法题:

题目描述

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

分析

比较有意思的一道题,面试中确实也有多次出现。这道题的关键是一个数字出现的次数大于充足长度的一半,换个角度看:如果存在这么个数字,这个数的计数次数减去其他和这个数不相等数字的计数次数后,最后的结果依旧大于0,这个是本题的解题思路的核心。


public class Solution {public int MoreThanHalfNum_Solution(int [] array) {int curNum = array[0];int count = 1;for(int i=1;i<array.length;i++){if(array[i]==curNum)count++;elsecount--;if(count<0){count = 1;curNum = array[i];}}//如果存在这个数,那么这个数一定是curNum,并且count>0if(count<=0)    return 0;int res = 0;for(int i=0;i<array.length;i++){if(array[i]==curNum)res++;}return res>(array.length)/2?curNum:0;}
}

注:在牛客网上刷剑指offer题目时,最好使用牛客网自带的编辑器,不建议使用IDE的代码补全功能,因为实际面试中是在A4纸上手写代码,是没有代码提示的。

有些题你看懂了,不代表你会了。看答案前或者看完答案第二天,动手在A4纸上写写代码就知道自己是不是真的会了。
每天分享一道剑指offer算法题目,并且有最适合面试手撕算法环节的解法分享,欢迎大家关注我们~

其他文章

1. 学习笔记和学习资料汇总:前端 + 后端 + java + 大数据 + python + 100多实战项目 + C++

2. 我的秋招经历总结:一站式秋招规划

3. 零基础学爬虫

4. 零基础C++学习总结

欢迎关注个人公众号【菜鸟名企梦】,公众号专注:互联网求职面经javapython爬虫大数据等技术分享:

公众号菜鸟名企梦后台发送“csdn”即可免费领取【csdn】和【百度文库】下载服务;

公众号菜鸟名企梦后台发送“资料”:即可领取5T精品学习资料java面试考点java面经总结,以及几十个java、大数据项目,资料很全,你想找的几乎都有

剑指offer算法题028:数组中出现次数超过一半的数字相关推荐

  1. 【剑指Offer】28、数组中出现次数超过一半的数字

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

  2. 剑指offer面试题[29]-数组中出现次数超过一半的数字

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

  3. 剑指offer面试题39. 数组中出现次数超过一半的数字(数组)(摩尔投票法)

    题目描述 **数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素.** 思路 详见链接 代码 class Solution:def ...

  4. 【剑指offer-Java版】29数组中出现次数超过一半的数字

    数组中出现次数超过一半的数字 两种思路: 思路一:由于出现次数超过一半,所以如果对这个数组进行划分之后无论如何,位于数组下标 n/2的数字就是出现次数超过一半的数 所以问题就转换为了求划分一次之后 位 ...

  5. 牛客题霸 [数组中出现次数超过一半的数字] C++题解/答案

    牛客题霸 [数组中出现次数超过一半的数字] C++题解/答案 题解: 题意很明确 跑一遍for循环,统计每个数出现的大小 然后再跑一边循环,查看是否存在大于一半的情况 注意题目要求是大于,没有等于 代 ...

  6. 程序员面试题精选100题(47)-数组中出现次数超过一半的数字[算法]

    题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字. 分析:这是一道广为流传的面试题,包括百度.微软和Google在内的多家公司都曾经采用过这个题目.要几十分钟的时间里很好地解答这道题 ...

  7. 剑指 Offer II 028. 数组中出现次数超过一半的数字

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找 ...

  8. java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...

    推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...

  9. 道指mt4代码_剑指offer算法题052:正则表达式匹配

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续13)
  2. Python模块制作
  3. 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?
  4. java udp 心跳,udp简略通讯示例-心跳示例
  5. 语录系统2.0随机一段话源码
  6. python获取windows系统信息_Python获取Windows系统信息
  7. Andorid视觉新冲击-Material design语言
  8. IT程序员必知!TCP/IP为什么会有这么多的致命漏洞?
  9. linux查看服务命令是什么,linux系统查看所有服务的命令
  10. Qt: QMutex
  11. 系统监控技术 -- 主机监控,信息转发,前台显示
  12. 从键盘录入10个整数,统计有多少个奇数,Java基础轻松实现
  13. 【转载】红外遥控HS0038B接法
  14. 老毛子Padavan固件,小米3,mini路由一键自动更新固件
  15. 怎样配置文件存储服务器,服务器搭建存储配置文件
  16. 结构性用工荒也是用工荒
  17. outlook设置京东邮箱
  18. ImprovedGAN论文略读
  19. win10计算机还原点如何创建,win10系统创建还原点及系统还原的操作方法
  20. [大数据技术] 淘宝双11数据分析与预测实验

热门文章

  1. 人月神话(四)削足适履、提纲挈领、未雨绸缪
  2. 企业微信微信社群运营该怎么做?
  3. 骁龙870相当于什么处理器 骁龙870什么水平
  4. 服务器固态硬盘连接,技术支招:服务器中固态硬盘如何选?
  5. OTA更新利用CRC保证程序的完整性
  6. bootstrap table 超链接的添加 a标签
  7. android 静默拍照功能,Android实现静默拍照功能
  8. java socket 聊天室_java利用Socket实现聊天室功能实例
  9. 《嵌入式系统设计师》笔记之一——嵌入式系统基础知识
  10. Introducing Android Instant Apps - Google I-O 2016 翻译字幕