zoukankan      html  css  js  c++  java
  • Java [Leetcode 347]Top K Frequent Elements

    题目描述:

    Given a non-empty array of integers, return the k most frequent elements.

    For example,
    Given [1,1,1,2,2,3] and k = 2, return [1,2].

    Note: 

      • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
      • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

    解题思路:

    使用HashMap计数

    代码如下:

    public class Solution {
        public List<Integer> topKFrequent(int[] nums, int k) {
    
        	Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        	List<Integer>[] freqArray = new List[nums.length + 1];
    
            for(int num : nums){
            	map.put(num, map.getOrDefault(num, 0) + 1);
            }
    
            for(int key : map.keySet()){
            	int freq = map.get(key);
            	if(freqArray[freq] == null)
            		freqArray[freq] = new ArrayList<Integer> ();
            	freqArray[freq].add(key);
            }
    
            List<Integer> res = new ArrayList<>();
    
            for(int i = freqArray.length - 1; i >= 0 & res.size() < k; i--){
            	if(freqArray[i] != null)
            		res.addAll(freqArray[i]);
            }
    
            return res;
    
        }
    }
    

      

  • 相关阅读:
    NIOS II常用函数整理
    C指针
    YCbCrYUV
    指针与引用的区别
    Pacman 命令详解
    DDR工作原理
    关于C/C++中的点操作符和箭头操作符
    千兆以太网芯片88E1111 RGMII模式的驱动
    关于建立时间和保持时间
    ECE 576 UDP Hardware
  • 原文地址:https://www.cnblogs.com/zihaowang/p/5723387.html
Copyright © 2011-2022 走看看