zoukankan      html  css  js  c++  java
  • 多数元素

    描述: 

    给定一个大小为 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
    你可以假设数组是非空的,并且给定的数组总是存在多数元素。

    示例 1:

    输入: [3,2,3]

    输出: 3

    示例 2:

    输入: [2,2,1,1,1,2,2]

    输出: 2

    思路:

    这道题有很多种方法求解:

    这里提供两个方法:

      1. 利用散列表,进行计数,即<数字,出现次数>,最后遍历散列表,找出出现次数大于n/2的元素。
      2. 消除法,每次遇到两个不同的数字,则将这两个数字从数组中删除。这样最后剩下的元素,一定是出现次数最多的元素。

    java(方法一)

    import java.util.HashMap;
    import java.util.Map;
    
    class Solution {
        public int majorityElement(int[] nums) {
            double n = Math.ceil(nums.length / 2.0);
            Map<Integer, Integer> dict = new HashMap<>(10);
            for (int num : nums) {
                if (dict.get(num) == null) {
                    dict.put(num, 1);
                } else {
                    dict.put(num, dict.get(num) + 1);
                }
            }
            for (Integer key : dict.keySet()) {
                if (dict.get(key) >= n) {
                    return key;
                }
            }
            return -1;
        }
    }

    结果:

     python3(方法二)

    class Solution:
          def majorityElement(self, nums: List[int]) -> int:
            flags = [True for num in nums]
            i = 0
            j = i + 1
            while i < len(nums):
                if flags[i]:
                    while j < len(nums):
                        if nums[i] != nums[j] and flags[j]:
                            flags[i], flags[j] = False, False
                            break
                        j += 1
                i += 1
            i = 0
            while i < len(nums):
                if flags[i]:
                    return nums[i]
                i += 1
            return -1

    结果:

  • 相关阅读:
    CentOS中rpm和yum到底有什么区别?
    Anaconda是个什么东东?
    Hadoop入门学习整理(三)
    Hadoop入门学习整理(二)
    CentOS6.10下安装MongoDB和Redis
    Linux 系统中环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别
    一些想法
    时间
    周末
    条件
  • 原文地址:https://www.cnblogs.com/nedulee/p/11954913.html
Copyright © 2011-2022 走看看