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

    xiaoxiao2026-03-06  11

    题目描述

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

    详细描述:

    接口说明

    原型:

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

    输入参数:

         unsignedint uiInputNum //输入整数个数

    int * pInputArray  //输入整数数组

    unsignedint uiK   //需输出uiK个整数

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

        int * pOutputArray //最小的uiK个整数

    返回值:

            false 异常失败

              true  输出成功

     

     

    输入描述:

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

    输出描述:

    输出一个整数数组

    输入例子:
    5 2 1 3 5 7 2
    输出例子:
    1 2 思路:就是对输入的数字进行排序,然后取出最小的几个

    第一种方法用List,第二种方法用数组,思路一模一样

    方法一:

    import java.util.*; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(scan.hasNext()) { int num=scan.nextInt(); int k=scan.nextInt(); ArrayList al=new ArrayList(); for(int i=0;i<num;i++){ al.add(scan.nextInt()); } Collections.sort(al); for(int i=0;i<k;i++){ if(i==k-1) System.out.println(al.get(i));//这里不能加空格,而且要是println,否则过不了 else System.out.print(al.get(i)+" "); } } } } 方法二:

    import java.util.*; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(scan.hasNext()) { int num=scan.nextInt(); int k=scan.nextInt(); int[] data=new int[num]; for(int i=0;i<num;i++){ data[i]=scan.nextInt(); } Arrays.sort(data); for(int i=0;i<k;i++){ if(i==k-1) System.out.println(data[i]); else System.out.print(data[i]+" "); } } } }

    转载请注明原文地址: https://ju.6miu.com/read-1307666.html
    最新回复(0)