当前位置:   article > 正文

Leetcode题347、前K个高频元素(Python题解)Amazon面试题

前k个高频元素

问题
在这里插入图片描述

题目来源:力扣(LeetCode

leetcode347.前K个高频元素

难度:中等

分析
本题解提供四种方法,分别是python的Counter技巧、堆、桶排序、快排。
对于python语言来说,这道题可以用python技巧一行做完,Counter的计数排序功能太强大。
堆天生适合求前k个最大/最小值。
桶适合计数排序的题目。
快排思想也适合寻找k大、k小元素。

解决方法
1:Counter技巧

#python技巧
#直接使用Counter计数,直接取频数最大的几位
#collections.Counter(nums).most_common(k)代表取频数最大的k位,key和value打包成元组储存在列表中。
#*代表不确定几位,可有多位
#zip将对应位置元素打包成元组
#打包完后,第0个元素就是要求的,但是zip类型不能直接取,得先变成list,然后取第0位。
import collections
class Solution(object):
    def topKFrequent(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: List[int]
        """
        return list(zip(*collections.Counter(nums).most_common(k)))[0]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

复杂度:O(

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/72801
推荐阅读
相关标签
  

闽ICP备14008679号