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;
        }
    };
  • 相关阅读:
    储存过程与触发器
    session 和 cookie
    (四)Jira工作流状态的属性
    (三)Jira scriptrunner插件
    (二)JIRA安装
    vs2015 调试无法访问网站的问题
    设计模式
    依赖倒置、反射、泛型、委托、AOP
    C# .NET
    持续集成
  • 原文地址:https://www.cnblogs.com/Asumi/p/12535804.html
Copyright © 2011-2022 走看看