• 剑指office--------最小的K个数 (待补充)


    题目描述

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。
     
     
    思路1:用排序算法   快排,堆排序等
     
    思路2:借用STL中的multiset,因为其有自动排序功能+存在重复元素(set是自动排序+去重)    ps:因为打acm原因,更倾向于借用stl
     
     1 class Solution {
     2 public:
     3     vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
     4         vector<int>ans;
     5         if (k==0||k>input.size()) return ans;
     6         multiset<int>q;
     7         int len=input.size();
     8         for (int i=0;i<len;i++){
     9             q.insert(input[i]);
    10             
    11         }
    12         
    13         multiset<int>::iterator it=q.begin();
    14         for (int i=0;i<k;i++){
    15             ans.push_back(*it);
    16             it++;
    17         }
    18         return ans;
    19     }
    20 };

    时间复杂度:O(input.size()+k)+往multiset插入元素  O(input.size() * log(input.size()))

    空间复杂度:O(input.size()+k)

  • 相关阅读:
    Jsp 4—— 内置对象
    Jsp 3—— 声明语法
    Jsp 2—— 小脚本
    CF1479B1 Painting the Array I
    P5337 [TJOI2019]甲苯先生的字符串
    CF19C Deletion of Repeats
    CF484D Kindergarten
    CF529B Group Photo 2 (online mirror version)
    CF1068B LCM
    CF554A Kyoya and Photobooks
  • 原文地址:https://www.cnblogs.com/q1204675546/p/13381481.html
Copyright © 2020-2023  润新知