leetcode面试题40:最小的k个数

今日打卡,排序+返回前k个数即可。主要就是考察排序。

本来尝试自己写了一个冒泡排序法,可是超出时间限制,于是直接用了内置的排序。

冒泡排序:

    for(int i = 0 ; i < arr.size() - 1; i++)
    {
        for(int j = i + 1; j < arr.size() ; j++)
        {
            if(arr[i] > arr[j]) {
                int temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }

完整代码:


vector<int> getLeastNumbers(vector<int>& arr, int k) {
    vector<int> res ;
    sort(arr.begin(),arr.end());
    for(int s = 0; s < k; s++)
    {
        res.push_back(arr[s]);
    }
    return res;
}
};

实际上没必要循环赋值,而是直接返回vector的前k个数,这就考察你对vector熟不熟了。

vector<int> getLeastNumbers(vector<int>& arr, int k) {
    sort(arr.begin(),arr.end());
    return vector<int>  (arr.begin(),arr.begin()+k);
}
};
发布了51 篇原创文章 · 获赞 52 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Hanghang_/article/details/104982531