剑指Offer40.最小的k个数 C++

1、题目描述

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

输入:arr = 3,2,1, k = 2

输出:1,2 或者 2,1
示例 2:

输入:arr = 0,1,2,1, k = 1

输出:0

2、VS2019上运行

排序法

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Solution {
public:
    vector<int> getLeastNumbers(vector<int>& arr, int k) {
        // 创建一个大小为 k 的向量 vec,并初始化为 0
        vector<int> vec(k, 0);

        // 对原始数组 arr 进行排序
        sort(arr.begin(), arr.end());

        // 将排序后的前 k 个数复制到 vec 中
        for (int i = 0; i < k; ++i) {
            vec[i] = arr[i];
        }

        // 返回 vec 向量
        return vec;
    }
};

int main() {
    // 测试样例
    vector<int> arr = { 4, 5, 1, 6, 2, 7, 3, 8 };
    int k = 4;

    Solution sol;
    vector<int> result = sol.getLeastNumbers(arr, k);

    // 输出最小的 k 个数
    cout << "The least " << k << " numbers: ";
    for (int num : result) {
        cout << num << " ";
    }
    cout << endl;

    return 0;
}

The least 4 numbers: 1 2 3 4

相关推荐
垆边人似月.4 分钟前
华为题:矩阵中的最长递增路径
算法·深度优先
小诗懂技术7 分钟前
linux驱动中断,相关中断的方式与适用场景
linux·arm开发·驱动开发·算法
不会就选b10 分钟前
算法日常・每日刷题--<动态规划>25
算法
fpcc13 分钟前
c++20新功能—std::osyncstream
c++·c++20
H.莓飛14 分钟前
【C++】模板初阶
linux·开发语言·c++·visual studio
十五年专注C++开发15 分钟前
基于Asio2实现http服务器的实践总结(二)
服务器·c++·http·asio2
技术不好的崎鸣同学19 分钟前
第七章:模块踩踏以覆写导出函数绕过CFG
c++·windows·安全·系统安全
Keep_Trying_Go20 分钟前
分割算法FastSAM论文详解
深度学习·算法·计算机视觉
miofly20 分钟前
GitHub 今日推荐|ps2-web-recomp:浏览器里跑 PS2 游戏的静态重编译方案
c++·开源·github
星夜离尘5620 分钟前
MATLAB 5 点滑动平均:filter 与 conv 的输出对齐,以及 2 样本延时的含义
开发语言·算法·matlab·滤波·fir