一、时间复杂度,空间复杂度概念,求多数元素

123 阅读1分钟

时间复杂度,空间复杂度

转:空间复杂度,时间复杂度概念


给定一个大小为N的数组,找到其中数量最多的那个元素

要求时间复杂度O(n),空间复杂度O(1)

例:[1,2,3,1,1,3]
“1”出现了三次,所以最多的元素是1


思路

考虑用抵消的思路进行处理,循环遍历相邻数字一样保留,不一样进行抵消.....

public int majorityElement(int[] nums){
    // 保存数量最多的那个值
    int currentNum = nums[0];
    // 计数次数
    int count = 1;
    for(int i=1;i<nums.length;i++){
        if(count == 0 ){
           currentNum = nums[i];
           count = 1;
        }else{
            if(currentNum == nums[i]){
                count++;
            }else{
                count--;
            }
        }
    }
    return currentNum;
}