您的位置:首页 > 编程语言 > Java开发

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

2016-08-16 10:17 351 查看


题目描述

输入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]+" ");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java笔试题