剑指offer——面试题29:数组中出现次数超过一半的数字

Solution1:

20180902日整理
注意几点:
1.若下一个数字和我们之前保存的数字相同,则次数 +1
2.若下一个数字和我们之前保存的数字不同,则次数 -1
3.如果次数为0,我们需要保存下一个数字,并把次数置为1
4.查完数要检查,防止{1,2,3,4,4}这种情况

class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {if(numbers.empty())return 0;else if(numbers.size() == 1)return numbers[0];int temp = numbers[0],temp_value=1;for(int i = 1; i<numbers.size(); i++){if(temp_value == 0){temp = numbers[i];temp_value = 1;}else if(numbers[i] == temp)temp_value++;else if(numbers[i] != temp)temp_value--;}//考虑到输入的数组中可能不存在出现次数超过数组长度一半的数字,则需要验证if(temp_value == 0)return 0;else{temp_value = 0;for(int i = 0; i < numbers.size(); i++){if(numbers[i] == temp)temp_value++;}return 2*temp_value>numbers.size()? temp:0;}}
};

剑指offer——面试题29:数组中出现次数超过一半的数字相关推荐

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

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

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

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

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

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

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

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

  5. 剑指offer:面试题39. 数组中出现次数超过一半的数字

    题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, ...

  6. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  7. 剑指Offer - 面试题3. 数组中重复的数字(哈希)

    1. 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组 ...

  8. 剑指offer 面试题03. 数组中重复的数字

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

  9. 剑指offer面试题[36]-数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  10. 剑指offer面试题[51]-数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

最新文章

  1. Swift中@IBDesignable/@IBInspectable的使用
  2. Spoj LCS2 - Longest Common Substring II
  3. gdbserver yum 安装_(OK) 编译cBPM—CentOS7—gdb—gdbserver—成功—调试
  4. html游戏代码_实现了代码自动生成,开发效率妥妥的提升,升职加薪跟上
  5. mysql all语法怎么用_MySQL UNION 与 UNION ALL 语法与用法
  6. cisco 9月24日 CCNA实验
  7. Mysql重新安装(ubuntu)
  8. nbu 7.5备份oracle,NBU7.5备份oracle
  9. ExpandableListView 的使用
  10. 中国手机沉浮录:告别青铜时代
  11. win10计算机系统优化设置,这些简单优化能让你的Win10流畅很多
  12. html页面实现打印
  13. 聚合供应链,Saas系统
  14. Mysql之查看数据库版本
  15. cut命令的详细用法
  16. git 在往云端push代码时候报错detached head
  17. 【统计机器学习-李航】第5章 决策树
  18. U盘变成RAW格式,数据如何恢复?
  19. 数学黑洞(三)角谷猜想
  20. 手机浏览器的出路 App化能否拯救其未来?

热门文章

  1. ASP.NET AJAX Advance Tips Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?...
  2. python---之打印日志logging
  3. (四)孪生神经网络介绍及pytorch实现
  4. [冲啊!!!!!]小白SLAM相关基础知识
  5. java 子类调用父类内部类_java 如何在子类方法中实例化父类的内部类?
  6. 计算机缺失esul.dll,msedgeupdateres_es.dll
  7. centos 如何测udp端口是否开放_如何测试端口通不通(四种方法)
  8. python抓取图片数字_Python OCR提取普通数字图形验证中的数字
  9. python获取每月的最后一天_关于日期:使用Python获取本月的最后一天
  10. csr 蓝牙驱动_双11来临之际,推荐几款无线蓝牙耳机吧