lintcode-easy-Majority Number

Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find it.

Example

Given [1, 1, 1, 1, 2, 2, 2], return 1

Challenge

O(n) time and O(1) extra space

投票法,利用一下要找的这个数大于size的一半这个性质

public class Solution {
    /**
     * @param nums: a list of integers
     * @return: find a  majority number
     */
    public int majorityNumber(ArrayList<Integer> nums) {
        // write your code
        if(nums == null || nums.size() == 0)
            return 0;

        Integer result = null;
        int count = 0;

        for(int i = 0; i < nums.size(); i++){
            if(result == null){
                result = nums.get(i);
                count = 1;
            }
            else if(nums.get(i) == result){
                count++;
            }
            else{
                count--;
                if(count == 0){
                    result = nums.get(i);
                    count = 1;
                }
            }
        }

        return result;
    }
}
时间: 2024-10-19 23:28:00

lintcode-easy-Majority Number的相关文章

lintcode easy Happy Number

Happy Number Write an algorithm to determine if a number is happy. A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process unt

Lintcode: Majority Number II 解题报告

Majority Number II 原题链接: http://lintcode.com/en/problem/majority-number-ii/# Given an array of integers, the majority number is the number that occurs more than 1/3 of the size of the array. Find it. Note There is only one majority number in the arra

Lintcode: Majority Number 解题报告

Majority Number 原题链接:http://lintcode.com/en/problem/majority-number/# Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find it. Example For [1, 1, 1, 1, 2, 2, 2], return 1 Challenge O(

lintcode 主元素:majority number III主元素III

题目 主元素 III 给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k. 样例 给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3 注意 数组中只有唯一的主元素 挑战 要求时间复杂度为O(n),空间复杂度为O(k) 解题 上一题刚介绍过所用的方法,但是这个确实很复杂的 先利用HashMap实现 public class Solution { /** * @param nums: A list of integers * @param k

[LintCode] Majority Number(以时间复杂度O(n)求主元素)

一个数据序列的主元素,是指序列中出现次数超过序列长度一半的元素. 法1(期望时间复杂度为O(n)): 由于主元素出现次数超过序列长度的一半,因此,主元素一定是中位数.可以利用递归划分求中位数的方法,期望时间复杂度为O(n). 法2: 显然,如果一个序列存在主元素,那么我们去掉序列中不同的两个数,剩下序列的主元素和原序列的主元素相同. 具体算法操作:记录两个量,当前元素x,计数cnt.初始化cnt为0:然后遍历序列,若cnt为0,则将x设为当前元素并将cnt置为1,否则,若当前元素和x相同,那么c

【Lintcode】046.Majority Number

题目: Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find it. Notice You may assume that the array is non-empty and the majority number always exist in the array. Have you met this que

[LintCode] Majority Number 求众数

Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find it. Notice You may assume that the array is non-empty and the majority number always exist in the array. Have you met this questio

Majority Number II

题目描述 链接地址 解法 算法解释 题目描述 Given an array of integers, the majority number is the number that occurs more than 1/3 of the size of the array. Example Given [1, 2, 1, 2, 1, 3, 3], return 1. Note There is only one majority number in the array. Challenge O(n

[Lintcode]46. Majority Element/[Leetcode]169. Majority Element

46. Majority Element/[169. Majority Element(https://leetcode.com/problems/majority-element/) 本题难度: Easy Topic: Greedy Description Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find

Majority Number I &amp; || &amp;&amp; |||

Majority Number Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find it. Example Given [1, 1, 1, 1, 2, 2, 2], return 1 分析: 既然这里只有一个majority number,那么它的个数减去其它number个数之和还是为正值. 1 public