• leetcode问题:求众数


    给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

    你可以假设数组是非空的,并且给定的数组总是存在众数。

    示例 1:

    输入: [3,2,3]
    输出: 3

    示例 2:

    输入: [2,2,1,1,1,2,2]
    输出: 2
    解法一:
    思路:从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开始计数,总能找到最多的那个。注意题目的条件:众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
    也就是说众数一定超过数组长度的一半,因此count最后不为0的数一定是众数。
    class Solution {
        public int majorityElement(int[] nums) {
           int count = 1;
           int maj = nums[0];
            for(int i = 1; i < nums.length;i++)
            {
                if(maj == nums[i])
                {
                    count++;
                }
                else
                {
                    count--;
                    if(count == 0)
                        maj = nums[i+1];
                }
            }
            return maj;
        }
    }
    解法2:超级简单
    class solution{
    public int majorityElement(int[] nums)
    {
    Arrays.sort(nums);
    return(nums[nums.length / 2])
    }
    }
  • 相关阅读:
    POJ 2503 Babelfish
    POJ 1182 食物链
    POJ 2352 Stars
    POJ 2528 Mayor's posters
    POJ 1328 Radar Installation
    POJ 1017 Packets
    jQuery实现登录提示
    【1-5】jQuery对象和DOM对象
    【1-4】jQuery代码风格-导航栏
    【3】买苹果
  • 原文地址:https://www.cnblogs.com/zhangchuan1001/p/10604812.html
Copyright © 2020-2023  润新知