47.Majority number II-主元素 II(中等题)
来源:互联网 发布:淘宝发布加盟招商信息 编辑:程序博客网 时间:2024/05/21 06:42
主元素 II
题目
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。
注意事项
数组中只有唯一的主元素样例
给出数组[1,2,1,2,1,3,3] 返回 1
挑战
要求时间复杂度为O(n),空间复杂度为O(1)。
题解
思路和46.Majority Number-主元素(容易题)的一致,如果发现3个不一样的数就进行消掉。记录两个candidate和每个candidate分别的出现次数。如果遍历到的数和两个candidate都不等,就将其对应的count都减1。最后将两个candidate再遍历一次验证一下谁出现的次数多谁就是主元素。
public class Solution{ /** * @param nums: * A list of integers * @return: The majority number that occurs more than 1/3 */ public int majorityNumber(ArrayList<Integer> nums) { int candidate1 = 0, candidate2 = 0; int count1 = 0, count2 = 0; for (int i = 0; i < nums.size(); i++) { if (candidate1 == nums.get(i) || count1 == 0) { count1++; candidate1 = nums.get(i); } else if (candidate2 == nums.get(i) || count2 == 0) { count2++; candidate2 = nums.get(i); } else { count1--; count2--; } } count1 = 0; count2 = 0; for (int j = 0; j < nums.size(); j++) { count1 += (candidate1 == nums.get(j)) ? 1 : 0; count2 += (candidate2 == nums.get(j)) ? 1 : 0; } return count1 > count2 ? candidate1 : candidate2; }}
Last Update 2016.9.30
0 0
- 47.Majority number II-主元素 II(中等题)
- 47.Majority number III-主元素 III(中等题)
- [LintCode] 主元素 II Majority Number II
- *[Lintcode]Majority Number II 主元素 II
- 4.Ugly Number II-丑数 II(中等题)
- Lintcode - Majority Number II
- Majority Number II
- Majority Number I&II
- [刷题]Majority Number II
- lintcode:Majority Number II
- #47 Majority Number II
- 83.Single Number II-落单的数 II(中等题)
- LintCode:Majority Number / Majority Number II / Majority Number III
- 125.Backpack II-背包问题 II(中等题)
- 117.Jump Game II-跳跃游戏 II(中等题)
- 143.Sort Colors II-排颜色 II(中等题)
- 153.Combination Sum II-数字组合 II(中等题)
- 198.Permutation Index II-排列序号II(中等题)
- Photoshop中的“磁性套索”背后算法的OpenCV实现
- bzoj1010: [HNOI2008]玩具装箱toy
- 好用的SQLAlchemy
- SDNU 1310.Cover Interval 区间合并之后求覆盖的区间长度
- poj1006
- 47.Majority number II-主元素 II(中等题)
- alloc_page分配内存空间--Linux内存管理(十七)
- 算法的力量----李开复
- JS原生之-----带导航的轮播图jq版
- 归并排序,scala实现
- POJ 4047 Garden
- 8583报文解析程序
- 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
- 第5周 项目3 - 括号的匹配(1)