<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實戰(zhàn)347:前 K 個高頻元素

          共 4267字,需瀏覽 9分鐘

           ·

          2021-08-09 20:35

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎知識和業(yè)務邏輯面試+算法面試。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做 前 K 個高頻元素,我們先來看題面:
          https://leetcode-cn.com/problems/top-k-frequent-elements/

          Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.

          給你一個整數(shù)數(shù)組 nums 和一個整數(shù) k ,請你返回其中出現(xiàn)頻率前 k 高的元素。你可以按 任意順序 返回答案。

          示例


          示例 1:

          輸入: nums = [1,1,1,2,2,3], k = 2
          輸出: [1,2]

          示例 2:

          輸入: nums = [1], k = 1
          輸出: [1]


          解題

          https://www.cnblogs.com/qionglouyuyu/p/13430581.html

          你可以假設給定的 k 總是合理的,且 1 ≤ k ≤ 數(shù)組中不相同的元素的個數(shù)。
          你的算法的時間復雜度必須優(yōu)于 O(n log n) , n 是數(shù)組的大小。
          題目數(shù)據(jù)保證答案唯一,換句話說,數(shù)組中前 k 個高頻元素的集合是唯一的。
          你可以按任意順序返回答案。

          思路:時間復雜度 O(n log n) -> 堆排序

          class Solution {
              public int[] topKFrequent(int[] nums, int k) {
                  //將每個數(shù)字的出現(xiàn)次數(shù)放入HashMap
                  Map<Integer, Integer> counts = new HashMap<>();
                  for(int i = 0; i < nums.length; i++){
                      if(counts.containsKey(nums[i])){
                          counts.put(nums[i], counts.get(nums[i])+1);
                      } else {
                          counts.put(nums[i], 1);
                      }
                  }

                  //建立只有k個元素的最小堆
                  PriorityQueue<Integer> minHeap = new PriorityQueue<>(new Comparator<Integer>(){
                      @Override
                      public int compare (Integer a, Integer b)
          {
                          //要重寫compare函數(shù):最小堆中存的是數(shù)字,但比較的是數(shù)字出現(xiàn)的頻率。默認是大頂堆。
                          return counts.get(a) - counts.get(b);
                      }
                  });
                  for(Integer key: counts.keySet()){
                      if(minHeap.size() < k) {
                          minHeap.add(key);
                      } else {
                          if(counts.get(key) > counts.get(minHeap.peek())){
                              minHeap.remove();
                              minHeap.add(key);
                          }
                      }
                  }

                  //輸出結果
                  int[] result = new int[k];
                  for(int i = 0; i < result.length; i++){
                      result[i] = minHeap.remove();
                  }
                  return result;
              }
          }


          好了,今天的文章就到這里,如果覺得有所收獲,請順手點個在看或者轉發(fā)吧,你們的支持是我最大的動力 。

          上期推文:

          LeetCode1-340題匯總,希望對你有點幫助!
          LeetCode刷題實戰(zhàn)341:扁平化嵌套列表迭代器
          LeetCode刷題實戰(zhàn)342:4的冪
          LeetCode刷題實戰(zhàn)343:整數(shù)拆分
          LeetCode刷題實戰(zhàn)344:反轉字符串
          LeetCode刷題實戰(zhàn)345:反轉字符串中的元音字母
          LeetCode刷題實戰(zhàn)346:數(shù)據(jù)流中的移動平均值

          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品污 | 黑人爱爱视频动态图 | 久久久久久久久免费观看完整版 | 小早川怜子一区二区三区 | 欧美V亚洲V综合V国产 |