剑指offer——面试题29:数组中出现次数超过一半的数字
剑指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:数组中出现次数超过一半的数字相关推荐
- 剑指offer面试题[29]-数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 剑指offer面试题39. 数组中出现次数超过一半的数字(数组)(摩尔投票法)
题目描述 **数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素.** 思路 详见链接 代码 class Solution:def ...
- 【剑指offer-Java版】29数组中出现次数超过一半的数字
数组中出现次数超过一半的数字 两种思路: 思路一:由于出现次数超过一半,所以如果对这个数组进行划分之后无论如何,位于数组下标 n/2的数字就是出现次数超过一半的数 所以问题就转换为了求划分一次之后 位 ...
- 【剑指Offer】28、数组中出现次数超过一半的数字
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 例如:输入如下所示的一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过 ...
- 剑指offer:面试题39. 数组中出现次数超过一半的数字
题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, ...
- 剑指offer面试题[40]-数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...
- 剑指Offer - 面试题3. 数组中重复的数字(哈希)
1. 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组 ...
- 剑指offer 面试题03. 数组中重复的数字
找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...
- 剑指offer面试题[36]-数组中的逆序对
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...
- 剑指offer面试题[51]-数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
最新文章
- Swift中@IBDesignable/@IBInspectable的使用
- Spoj LCS2 - Longest Common Substring II
- gdbserver yum 安装_(OK) 编译cBPM—CentOS7—gdb—gdbserver—成功—调试
- html游戏代码_实现了代码自动生成,开发效率妥妥的提升,升职加薪跟上
- mysql all语法怎么用_MySQL UNION 与 UNION ALL 语法与用法
- cisco 9月24日 CCNA实验
- Mysql重新安装(ubuntu)
- nbu 7.5备份oracle,NBU7.5备份oracle
- ExpandableListView 的使用
- 中国手机沉浮录:告别青铜时代
- win10计算机系统优化设置,这些简单优化能让你的Win10流畅很多
- html页面实现打印
- 聚合供应链,Saas系统
- Mysql之查看数据库版本
- cut命令的详细用法
- git 在往云端push代码时候报错detached head
- 【统计机器学习-李航】第5章 决策树
- U盘变成RAW格式,数据如何恢复?
- 数学黑洞(三)角谷猜想
- 手机浏览器的出路 App化能否拯救其未来?
热门文章
- ASP.NET AJAX Advance Tips Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?...
- python---之打印日志logging
- (四)孪生神经网络介绍及pytorch实现
- [冲啊!!!!!]小白SLAM相关基础知识
- java 子类调用父类内部类_java 如何在子类方法中实例化父类的内部类?
- 计算机缺失esul.dll,msedgeupdateres_es.dll
- centos 如何测udp端口是否开放_如何测试端口通不通(四种方法)
- python抓取图片数字_Python OCR提取普通数字图形验证中的数字
- python获取每月的最后一天_关于日期:使用Python获取本月的最后一天
- csr 蓝牙驱动_双11来临之际,推荐几款无线蓝牙耳机吧