Majority Element 和 Majority Element II LeetCode Java__Java

來源:互聯網
上載者:User

Majority Element Total Accepted: 44517 Total Submissions: 127008 My Submissions Question Solution
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

這道題,可以使用O(1)空間和O(n)時間複雜度實現,程式如下:

    public int majorityElement(int[] nums) {        int count =1;        int major=nums[0];        for(int i=1;i<nums.length;i++){            if(nums[i]==major){                count++;            }else if(count==0){                count++;                major=nums[i];            }else{                count--;            }        }        return major;    }

Majority Element II

Majority Element II Total Accepted: 302 Total Submissions: 1356 My Submissions Question Solution
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.

這道題目的思路和上一類似,程式如下:

    public List<Integer> majorityElement(int[] nums) {        List<Integer> rst=new ArrayList<Integer>();        int rst1=0,rst2=0;        int count1=0,count2=0;        int index=0;        int len=nums.length;        while(index<len){            int cur=nums[index];            if(count1!=0&&cur==rst1){                count1+=1;            }else if(count2!=0&&cur==rst2){                count2+=1;            }else if(count1==0){                rst1=cur;                count1+=1;            }else if(count2==0){                rst2=cur;                count2+=1;            }else {                count1--;                count2--;            }            index++;        }        count1=0;        count2=0;        for(int i=0;i<len;i++){            if(nums[i]==rst1){                count1++;            }else if(nums[i]==rst2){                count2++;            }        }        if(count1>len/3){            rst.add(rst1);        }        if(count2>len/3){            rst.add(rst2);        }        return rst;           }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.