华为OJ试题:输入n个整数,输出其中最小的k个

爱被打了一巴掌 2022-08-09 02:28 256阅读 0赞



































  1. 输入n个整数,输出其中最小的k个。

    详细描述:

    接口说明

    原型:

    bool GetMinK(unsignedint uiInputNum, int  pInputArray, unsignedint uiK, int  pOutputArray);

    输入参数:

         unsignedint uiInputNum //输入整数个数

    int  pInputArray  //输入整数数组

    unsignedint uiK   //需输出uiK个整数

    输出参数(指针指向的内存区域保证有效):

        int  pOutputArray //最小的uiK个整数

    返回值:

            false 异常失败

              true  输出成功

     

     

知识点 循环,数组
运行时间限制 10M
内存限制 128
输入

输入说明 
1 输入两个整数 
2 输入一个整数数组

输出

输出一个整数数组

样例输入 5 2 1 3 5 7 2
样例输出 1 2
  1. #include <stdarg.h>
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <vector>
  5. #include <string.h>
  6. #include <algorithm>
  7. #include <stdlib.h>
  8. #include<memory>
  9. #include <string.h>
  10. #include <set>
  11. using namespace std;
  12. bool GetMinK(unsigned int uiInputNum, int *pInputArray, unsigned int uiK, int * pOutputArray)
  13. {
  14. if (pInputArray == NULL || pOutputArray == NULL || uiInputNum < uiK || uiK < 0)
  15. return false;
  16. if (uiK == 0)
  17. return true;
  18. unsigned int i = 0;
  19. vector<int> vec;
  20. for (i = 0; i < uiK; i++)
  21. {
  22. vec.push_back(pInputArray[i]);
  23. }
  24. /* 排序 */
  25. sort(vec.begin(), vec.end());
  26. for (i = uiK; i < uiInputNum; i++)
  27. {
  28. if (vec[uiK - 1] > pInputArray[i])
  29. {
  30. vec[uiK - 1] = pInputArray[i];
  31. sort(vec.begin(), vec.end());
  32. }
  33. }
  34. for(i = 0; i < uiK; i++)
  35. {
  36. pOutputArray[i] = vec[i];
  37. }
  38. return true;
  39. }
  40. int main()
  41. {
  42. int input = 0, output = 0;
  43. int *pdata = NULL;
  44. int *pout = NULL;
  45. int i = 0;
  46. cin >> input >> output;
  47. pout = new int[output];
  48. pdata = new int[input];
  49. for (i = 0; i < input; i++)
  50. {
  51. cin >> pdata[i];
  52. }
  53. GetMinK(input, pdata, output, pout);
  54. for(i = 0; i < output; i++)
  55. {
  56. if(i == 0)
  57. {
  58. cout << pout[i];
  59. }
  60. else
  61. {
  62. cout << " " << pout[i];
  63. }
  64. }
  65. cout << endl;
  66. delete []pdata;
  67. delete []pout;
  68. return 0;
  69. }

发表评论

表情:
评论列表 (有 0 条评论,256人围观)

还没有评论,来说两句吧...

相关阅读