华为OJ——输入n个整数,输出其中最小的k个
2016-11-04 16:50
363 查看
今天刷的这题比较简单,长时间没刷 OJ 了,今天那这个小题目练练手,回忆一下 C++ 相关知识。先上题目:
示例代码:
知识点解析:
(1)sort(vec.begin(), vec.end()) : 使用 sort 需要包含 algorithm 头文件,默认是从小到大排序,如果需要从大到小排序,则可考虑假如并改写 comp 函数。
比较时sort函数根据comp函数进行判断输的大小,系统默认 a < b 时返回真,于是从小到大排,而 comp 函数设定为 a > b 时返回为真,那么最终得到的排序结果也相应的从小到大变成从大到小。
(2)通常来说,假设 vec 是一个 vector 对象,则 vec.at(n) 和 vec
是一样的,只不过前者会检查是否越界(因此花费的时间稍多),如果 n 越界,会抛出 out_of_range 异常,而后者不会(后者越界会导致未定义行为)。
示例代码:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(int argc, char *argv[]) { int count; int number; int i; int j; int minCount; vector<int>vec; cin>>count; cin>>minCount; for(i=0;i<count;i++) { cin>>number; vec.push_back(number); } sort(vec.begin(), vec.end()); for (j = 0; j < minCount; j ++) { cout<<vec.at(j); if (j == minCount - 1) { break; } cout<<" "; } return 0; }
知识点解析:
(1)sort(vec.begin(), vec.end()) : 使用 sort 需要包含 algorithm 头文件,默认是从小到大排序,如果需要从大到小排序,则可考虑假如并改写 comp 函数。
bool comp(const int &a,const int &b) { return a>b; } sort(vec.begin(),v.end(),comp);
比较时sort函数根据comp函数进行判断输的大小,系统默认 a < b 时返回真,于是从小到大排,而 comp 函数设定为 a > b 时返回为真,那么最终得到的排序结果也相应的从小到大变成从大到小。
(2)通常来说,假设 vec 是一个 vector 对象,则 vec.at(n) 和 vec
是一样的,只不过前者会检查是否越界(因此花费的时间稍多),如果 n 越界,会抛出 out_of_range 异常,而后者不会(后者越界会导致未定义行为)。
相关文章推荐
- 输入n个整数,输出其中最小的k个——来自华为OJ平台测试基础篇
- 【华为OJ】输入n个整数,输出其中最小的k个
- 华为OJ平台试题 —— 数组:输入n个整数,输出其中最小的k个
- 【华为OJ】输入n个整数,输出其中最小的k个
- 华为OJ基础篇-输入n个整数,输出其中最小的k个
- 华为OJ——输入n个整数,输出其中最小的k个
- 华为oj 输入n个整数,输出其中最小的k个
- 华为oj: 输入n个整数,输出其中最小的k个
- 华为OJ——输入n个整数,输出其中最小的k个
- 华为OJ题目(二十一):输入n个整数,输出其中最小的k个
- 华为OJ——输入n个整数,输出其中最小的k个
- 【华为OJ】【040-输入n个整数,输出其中最小的k个】
- 华为OJ试题:输入n个整数,输出其中最小的k个
- 华为OJ 初级:输入n个整数,输出其中最小的k个
- 华为oj初级 输入n个整数,输出其中最小的k个
- [华为OJ--C++]040-输入n个整数,输出其中最小的k个
- [华为]输入n个整数,输出其中最小的k个
- 华为(9)输入n个整数,输出其中最小的k个
- 【华为机试】输入n个整数,输出其中最小的k个
- 华为机试---输入n个整数,输出其中最小的k个