zoukankan      html  css  js  c++  java
  • 【Leetcode】面试题40. 最小的k个数(每日一题)

    题目链接:最小的k个数


    题意:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。


    题解:感觉应该是第二次做了。。最简单的想法就是,sort排序。

    但是加了一个堆的做法,但是不是用手写堆,用的优先队列。

    然而我堆跑的比sort慢。。


    代码:

    class Solution {
    public:
        vector<int> getLeastNumbers(vector<int>& arr, int k) {
            vector<int> ans;
            if(k == 0)  return ans;
            sort(arr.begin(),arr.end());
    
            
            for(int i = 0;i < k;i++){
                ans.push_back(arr[i]);
            }
    
            return ans;
        }
    };
    
    
    OR
    
    
    class Solution {
    public:
        vector<int> getLeastNumbers(vector<int>& arr, int k) {
            vector<int> ans;
            if(k == 0)  return ans;
    
            priority_queue<int,vector<int>,less<int>> q;
            
            for(int i = 0;i < arr.size();i++){
                q.push(arr[i]);
                if(q.size() > k)    q.pop();
            }
            for(int i = 0 ;i < k;i++){
                ans.push_back(q.top());
                q.pop();
            }
    
            return ans;
        }
    };
  • 相关阅读:
    Python paramik
    JavaScript和DOM
    HTML和CSS
    salt基本使用之二(2)
    nginx+php与apache+php性能对比
    varnish状态引擎2
    varnish状态引擎1
    varnish简介
    使用memcached实现tomcat集群session共享
    php安装redis扩展连接redis服务器
  • 原文地址:https://www.cnblogs.com/Asumi/p/12535804.html
Copyright © 2011-2022 走看看