zoukankan      html  css  js  c++  java
  • leetcode| 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].

    题目:意思很简单就是,找出数组中出现规定次数的元素

    思路:细细深究后无果,还是决定用hashmap,大家有更好更高效的,多多赐教

    public List<Integer> topKFrequent(int[] nums, int k) {

      List<Integer>[] bucket = new List[nums.length + 1];
      Map<Integer, Integer> frequencyMap = new HashMap<Integer, Integer>();

      for (int n : nums) {
        frequencyMap.put(n, frequencyMap.getOrDefault(n, 0) + 1);
      }

      for (int key : frequencyMap.keySet()) {
        int frequency = frequencyMap.get(key);
        if (bucket[frequency] == null) {
        bucket[frequency] = new ArrayList<>();
      }
      bucket[frequency].add(key);
      }

      List<Integer> res = new ArrayList<>();

      for (int pos = bucket.length - 1; pos >= 0 && res.size() < k; pos--) {
        if (bucket[pos] != null) {
          res.addAll(bucket[pos]);
        }
      }
      return res;

    }

    注意一点,代码中标注的粗体方法是jdk8的新特性,jdk8以下老老实实的用代码实现吧,也不复杂,一眼就懂!

    StayHungry 求知若渴 StayFoolish 放低姿态
  • 相关阅读:
    vue基础指令了解
    django中间件和auth模块
    form组件及cookie和session
    ajax学习相关
    数据库优化查询相关
    Django ORM必会13条之外的查询方法
    Django ORM单表查询必会13条
    Django学习之路05
    Django学习之路04
    Django学习之路03
  • 原文地址:https://www.cnblogs.com/wujunjie/p/5687390.html
Copyright © 2011-2022 走看看