华为机试在线训练_输入 n 个整数,输出其中最小的 k 个(数组)
输入n个整数,输出其中最小的k个
http://www.nowcoder.com/questionTerminal/69ef2267aafd4d52b250a272fd27052c
/*
本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。
欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。
我是一名有诗人气质的网络安全工程师
期待与你的思想交流碰撞出智慧的花火
水木清华
2020-03-24
输入 n 个整数,输出其中最小的 k 个
*/
//普通法:
#include <iostream>
#include <algorithm>
using namespace std;
//输入 n 个整数,输出其中最小的 k 个的函数接口
int Get_Min_K(unsigned int N, unsigned int K)
{
int Array[N]; //整数数组
//输入 N 个整数(组成的整数数组)
for (int i = 0; i < N; i++)
{
cin >> Array[i];
}
//数组元素排序
sort(Array, Array + N);
//输出前 K 个整数
for (int i = 0; i < K; i++)
{
cout << Array[i] << ' ';
}
cout << endl;
return 0;
}
//主函数
int main()
{
unsigned int N, K;
while (cin >> N >> K)
{
Get_Min_K(N, K);
}
return 0;
}
/*
bool GetMinK(unsigned int uiInputNum, int * pInputArray, unsignedint uiK, int * pOutputArray);
输入参数:
unsigned int uiInputNum //输入整数个数
int * pInputArray //输入整数数组
unsigned int uiK //需输出uiK个整数
输出参数(指针指向的内存区域保证有效):
int * pOutputArray //最小的uiK个整数
返回值:
false 异常失败
true 输出成功
*/
/*
//指针法:
//基于 Grooovvve 的指向指针的指针实现方案
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a < b;
}
//输入 n 个整数,输出其中最小的 k 个的函数接口
bool GetMinK(unsigned int uiInputNum, int pInputArray[], unsigned int uiK, int ** pOutputArray)
{
if(uiInputNum < uiK)
{
return false;
}
sort(pInputArray, pInputArray + uiInputNum, cmp);
*pOutputArray = new int[uiK];
for(unsigned int i = 0; i < uiK; i++)
{
(*pOutputArray)[i] = pInputArray[i];
}
return true;
}
int main()
{
unsigned int n, k;
while (cin >> n >> k)
{
int array[n];
for(int i = 0; i < n; i++)
{
cin >> array[i];
}
int * OutputArray = nullptr;
if(GetMinK(n, array, k, &OutputArray))
{
for(unsigned int i = 0; i < k; i++)
{
cout << OutputArray[i] << " ";
}
cout << endl;
delete [] OutputArray;
}
}
return 0;
}
*/大厂面试 文章被收录于专栏
分享有用的面试经历,倾吐有心的面试感悟,讲述有趣的面试故事,以飨读者。 常用语言是C++,编程力求规范整洁,题解清晰完整,像写诗一样去写代码。 本专栏文章系「人工智能安全」(微信公众号)原创,转载请联系本文作者。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师,期待与你的思想交流碰撞出智慧的花火。
查看17道真题和解析
