zoukankan      html  css  js  c++  java
  • 剑指offer:最小k个数

    题目描述

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

    代码:

    1.普通人的大顶堆解法

    class Solution {
    public:
        vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
            if (k == 0 || k > input.size()) return {};
            priority_queue<int> p;
            vector<int> ans;
            for(int i = 0; i < k; i++){
                p.push(input[i]);
            }
            for(int i = k; i < input.size(); i++){
                if(input[i] < p.top()){
                    p.pop();
                    p.push(input[i]);
                }
            }
            for(int i = 0; i < k; i++){
                ans.push_back(p.top());
                p.pop();
            }
            return ans;
            
        }
    };

    2.

    普通人懒人解法

    class Solution {
    public:
        vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
            if(k > input.size() || input.empty()) return {};
            vector<int> ans;
            sort(input.begin(), input.end());
            for(int i = 0; i < k; i++){
                ans.push_back(input[i]);
            }
            
            return ans;
        }
    };

    3.

    冒泡排序:

    class Solution {
    public:
        vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
            if(k > input.size() || input.empty()) return {};
            vector<int> ans;
            for(int i = 0; i < k; i++){
                for(int j = 0; j < input.size()-i - 1; j++){
                    if(input[j] < input[j+1]){
                        int tmp = input[j];
                        input[j] = input[j+1];
                        input[j+1] = tmp;
                    }
                }
                ans.push_back(input[input.size()-i-1]);
            }
            
            return ans;
        }
    };
  • 相关阅读:
    CodeForces 660D Number of Parallelograms
    【POJ 1082】 Calendar Game
    【POJ 2352】 Stars
    【POJ 2481】 Cows
    【POJ 1733】 Parity Game
    【NOI 2002】 银河英雄传说
    【NOI 2015】 程序自动分析
    【POJ 1704】 Georgia and Bob
    【HDU 2176】 取(m堆)石子游戏
    【SDOI 2016】 排列计数
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12730962.html
Copyright © 2011-2022 走看看