229. Majority Element II

思路就是三个三个删,如何描述是三个三个删的关键是两个count要描述好。之前没仔细写,count应该有四种case 都要注意。

class Solution {
    public List<Integer> majorityElement(int[] nums) {
        List<Integer> result = new ArrayList<>();
        if(nums==null||nums.length==0) return result;
        int target1 = nums[0];
        int target2 = 0;
        for(int i = 0 ;i<nums.length;i++ )
        {
            if(nums[i]!=target1)
            {
                target2=nums[i];
                break;
            }
        }
        int count1= 0;
        int count2= 0;
        for(int i = 0;i<nums.length;i++  )
        {
            if(nums[i]==target1)
                count1++;
            else if(nums[i]==target2)
                count2++;
            else
            {
                if(count1==0&&count2==0)
                {
                    target1=nums[i];
                    count1++;
                }  
                else if(count1!=0&&count2==0)
                {
                    target2=nums[i];
                    count2++;
                }
                  else if(count1==0&&count2!=0)
                {
                    target1=nums[i];
                    count1++;
                }
                else
                {
                    count2--;
                    count1--;
                }
            }
        }
        count1= 0;
        count2= 0;
         for(int i = 0;i<nums.length;i++  )
         {
             if(nums[i]==target1)
                 count1++;
             if(nums[i]==target2)
                 count2++;
         }
        if(count1>nums.length/3)
            result.add(target1);
        if(count2>nums.length/3)
        {
            if(target1!=target2)
                 result.add(target2);
        }
        return result;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容