LeetCode:Majority Element II
Posted walker lee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Majority Element II相关的知识,希望对你有一定的参考价值。
Total Accepted: 30176 Total
Submissions: 115847 Difficulty: Medium
Given an integer array of size n, find all elements that appear more than ?
n/3 ?
times. The algorithm should run in linear time and in O(1) space.
Hint:
- How many majority elements could it possibly have?
- Do you have a better hint? Suggest it!
Subscribe to see which companies asked this question
Hide Similar Problems
思路:
最多只能有两个数符合结果,因此用两个变量,计算它们是否超过? n/3 ?。
java code:
public class Solution { public List<Integer> majorityElement(int[] nums) { List<Integer> ans = new ArrayList<Integer>(); if(nums == null || nums.length == 0) return ans; int x = 0, y = 1; int cx = 0, cy = 0; for(int num : nums) { if(num == x) { cx++; } else if(num == y) { cy++; } else if(cx == 0) { x = num; cx = 1; } else if(cy == 0) { y = num; cy = 1; } else { cx--; cy--; } } cx = cy = 0; for(int num : nums) { if(num == x) cx++; else if(num == y) cy++; } if(cx > nums.length/3) ans.add(x); if(cy > nums.length/3) ans.add(y); return ans; } }
以上是关于LeetCode:Majority Element II的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode?????????-Majority Element???Java?????????
[LeetCode] Majority Element II
说 element1, element2 display: inline block; 和 element1 + element2 (display: inline block;) 有啥区别? [复制