1. 程式人生 > 其它 >#力扣 LeetCode面試題 17.10. 主要元素 @FDDLC

#力扣 LeetCode面試題 17.10. 主要元素 @FDDLC

技術標籤:演算法&資料結構

題目描述:

https://leetcode-cn.com/problems/find-majority-element-lcci/

Java程式碼:

class Solution {
    public int majorityElement(int[] nums) { //注意length能否為0
        int base=-1,cnt=0; //base的初值任意
        for(int num:nums){
            if(cnt==0)base=num;
            if(base==num)cnt++;
            else cnt--;
        }
        if(cnt!=0){
            for(int i=0,c=0,h=nums.length/2;i<nums.length;i++){
                if(base==nums[i]&&++c>h)return base;
            }
        }
        return -1;
    }
}

Java程式碼二:

class Solution {
    public int majorityElement(int[] nums) { //注意length能否為0
        int base=-1,cnt=0,c=0,h=nums.length/2; //base的初值任意
        for(int num:nums){
            if(cnt==0)base=num;
            cnt+=base==num?1:-1;
        }
        if(cnt!=0){
            for(int num:nums)if(base==num)c++;
        }
        return c>h?base:-1;
    }
}