zoukankan      html  css  js  c++  java
  • 剑指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)

  • 相关阅读:
    第4次作业得分-东师软工
    第3次作业得分-东师软工
    C语言-第3次作业得分
    NPM
    Node模块化
    spring源码解析前瞻
    单例DCL模式
    dubbo-admin安装
    linux 安装Zookeeper
    Tomcat在Linux上的安装与配置
  • 原文地址:https://www.cnblogs.com/q1204675546/p/13381481.html
Copyright © 2011-2022 走看看