剑指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

相关推荐
苏言の狗18 分钟前
小R的并集大小期望计算 | 蛮力
数据结构·算法
BineHello24 分钟前
MPC用优化求解器 - 解决无人机轨迹跟踪
算法·矩阵·自动驾驶·动态规划·无人机
誓约酱26 分钟前
(每日一题) 力扣 14 最长公共前缀
算法·leetcode·职场和发展
刃神太酷啦29 分钟前
数据结构(蓝桥杯常考点)
数据结构·c++·蓝桥杯c++组
17´39 分钟前
Qt从入门到入土(八) -打包Qt程序
开发语言·c++·qt
冠位观测者1 小时前
【Leetcode 每日一题 - 补卡】2070. 每一个查询的最大美丽值
数据结构·算法·leetcode
誓约酱1 小时前
(每日一题) 力扣 860 柠檬水找零
linux·c语言·c++·算法·leetcode·职场和发展
地平线开发者1 小时前
手把手基于 MINI 数据集带你做一次板端精度评估
算法·自动驾驶
詹天佐1 小时前
ICCE 数字车钥匙介绍
人工智能·算法
ak啊1 小时前
记忆化(Memoization)
算法