码迷,mamicode.com
首页 > 其他好文 > 详细

Baozi Leetcode solution 169: Major Element

时间:2019-12-17 13:31:47      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:https   ++   class   one   element   app   appear   imp   ntop   

Problem Statement 

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.

Example 1:

Input: [3,2,3]
Output: 3

Example 2:

Input: [2,2,1,1,1,2,2]
Output: 2

 Problem link

Video Tutorial

You can find the detailed video tutorial here

Thought Process

Simple but great question that can be solved in many ways, the voting one approves to be the most time and space efficient solution. 

 

You can refer to Leetcode official solution for a detailed explanation.

Solutions

 

 1 public int majorityElement(int[] num) {
 2     int vote = 0;
 3     int res = 0;
 4 
 5     for (int i = 0; i < num.length; i++) {
 6         if (vote == 0) {
 7             res = num[i];
 8             vote++;
 9         } else {
10             if (num[i] == res) {
11                 vote++;
12             } else {
13                 vote--;
14             }
15         }
16     }
17 
18     return res;
19 }
20 
21 public int majorityElementOptimized(int[] num) {
22     int vote = 0;
23     int majorityElement = 0;
24 
25     for (int i = 0; i < num.length; i++) {
26         if (vote == 0) {
27             majorityElement = num[i];
28         }
29         vote += num[i] == majorityElement ? 1 : -1;
30     }
31 
32     return majorityElement;
33 }

 

Voting implementation

Time Complexity: O(N) where N is the array size

Space Complexity: O(1) Consant space

 

References

Baozi Leetcode solution 169: Major Element

标签:https   ++   class   one   element   app   appear   imp   ntop   

原文地址:https://www.cnblogs.com/baozitraining/p/12053768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!