zoukankan      html  css  js  c++  java
  • 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])
    }
    }
  • 相关阅读:
    多播委托和匿名方法再加上Lambda表达式
    委托
    从警察抓小偷看委托
    StringBuilder
    C#修饰符详解
    数据结构与算法之队列
    数据结构与算法之栈
    win10重复安装
    网络编程基础
    PrintPreviewControl
  • 原文地址:https://www.cnblogs.com/zhangchuan1001/p/10604812.html
Copyright © 2011-2022 走看看