• 29、剑指offer--最小的K个数


    题目描述
    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
     
    解题思路:使用multiset存储k个最小值
    1)先存入k个值
    2)用multiset中的最大值和当前访问数组元素比较,若小于则把该值从multiset中移除,数组元素插入
    3)遍历multiset将k个值存入vector中
    注意事项:边界条件的判断,数组为空,k小于1,以及k大于数组元素数目
     1 class Solution {
     2 public:
     3     vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
     4         vector<int> result;
     5         if(input.empty() || k<1 || input.size()<k)
     6             return result;
     7         multiset<int> insert_set;
     8  
     9         set<int>::iterator it; //定义前向迭代器
    10         multiset<int>::reverse_iterator rit; //定义反向迭代器
    11         for(int i=0;i<input.size();i++)
    12         {
    13  
    14             if(i<k)
    15             {
    16                 insert_set.insert(input[i]);
    17             }
    18  
    19             else
    20             {
    21                 rit = insert_set.rbegin();
    22                 if(input[i] < *rit)
    23                 {
    24  
    25                     insert_set.erase(*rit);
    26                     insert_set.insert(input[i]);
    27                 }
    28             }
    29         }
    30  
    31  
    32         for(it = insert_set.begin(); it != insert_set.end(); it++)
    33         {
    34             result.push_back(*it);
    35         }
    36         return result;
    37     }
    38 };
  • 相关阅读:
    configuring express for ejs
    if else in EJS
    nodegroupchat exercise
    heap&stack 区别
    如何构建积木式Web应用(引自微软CSDN )
    Configuring IIS: Mapping .* to the aspnet_isapi.dll
    递归遍历XML生成树
    数据库应用:无法更新到数据库
    C#中HashTable的用法
    如何使用Eclipse编译C,C++,JAVA程序
  • 原文地址:https://www.cnblogs.com/qqky/p/6929074.html
Copyright © 2020-2023  润新知