zoukankan      html  css  js  c++  java
  • 力扣169题 求众数

    本题是力扣网第169题。

    1、采用暴力求解,n平方级别

    2、采用字典,在逆序,时间为n,空间为n

    3、采用分治,nlog(n)

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

    class Solution:
        '''
        采用字典方式,再逆向排序,拿到即为次数最多的键
        '''
        def majority_deal(self,arr):
            dic = {}
            for data in arr:                                                #遍历所有元素
                if data not in dic:
                    dic[data] = 1                                           #如果元素不在字典中值赋为1
                else:
                    dic[data] += 1                                          #如果元素在字典中,值便加1
            res = sorted(dic.items(),key=lambda item:item[1],reverse=True)  #对字典进行按值降序排序
            return res[0][0]                                                #返回第一个键的值
        '''
        如果按力扣的解法,如果次数大于一半以上为众数
        '''
        def majority_likou(self,arr):
            arr = sorted(arr)
            return arr[len(arr)/2]
        
    if __name__ == '__main__':
        solution = Solution()
        arr = [1,1,2,2,2,3,3,3,3,4,5]
        result = solution.majority_deal(arr)
        print(result)
        
  • 相关阅读:
    Spring--AOP
    Database--事务
    Neo4j--UNIQUE约束
    Neo4j--INDEX索引
    排序算法 目录
    数据结构 目录
    设计模式 目录
    建造者模式及应用举例
    模板模式以及应用举例
    真·随笔
  • 原文地址:https://www.cnblogs.com/missidiot/p/11443601.html
Copyright © 2011-2022 走看看