LeetCode Majority Element

来源:互联网 发布:拯救者y50p优化系统 编辑:程序博客网 时间:2024/06/03 04:26

思路:

从头开始,如果遇到2个不同的数,就都删除,一直到最后,剩下的数就是出现次数大于n/2的。

可以推广到找出现次数大于n/k的情况,即遇到k个不同的数,删除,剩下的数就是出现次数大于n/k的。

时间复杂度O(N),空间复杂度:O(1)。

java code:

public class Solution {    public int majorityElement(int[] nums) {        int count = 0, candidate = 0;        for(int i = 0; i < nums.length; ++i) {            if(count == 0) {                candidate = nums[i];                count = 1;            }else {                if(candidate == nums[i]) {                    count++;                }else {                    count--;                }                if(count > nums.length / 2 + 1) return candidate;            }        }        return candidate;    }}
0 0
原创粉丝点击