n个数里最小的k个
来自牛客网的问题
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String [] args){
Scanner sc=new Scanner(System.in);//表示从控制台获取数据
while(sc.hasNext()){//hasNext系统会等待下一个字符,返回值为true
String temp=sc.nextLine();//nextLine()则是扫描剩下的所有字符串直到遇到回车为止
String arr1[]=temp.split(" ");
int []arr2=new int[arr1.length-1];
for(int i=0;i<arr1.length-1;i++){
arr2[i]=Integer.parseInt(arr1[i]);//把字符串的数字转换成整型的数字
}
int k=0;
k=Integer.parseInt(arr1[arr1.length-1]);
Arrays.sort(arr2);
if(k<arr2.length)
for(int i=0;i<k;i++){
if(i==k-1)//这里只是为了保证最后没有空格,符合输出
System.out.print(arr2[i]);
else
System.out.print(arr2[i]+" ");
}
else {//k大于等于n的时候
for(int i=0;i<arr2.length;i++)
if(i==arr2.length-1){
System.out.println(arr2[i]);
}
else
System.out.println(arr2[i]+" ");
}
}
}
}
这题通过了牛客网的测试。发现了牛客网的测试用例有问题,他没检查到当k=n-1的情况,比如说如果想找3个数里最小的3个,然后输入100 99 98 3 应该输出应该是直接把3个数排序就是了,这种情况是存在的,但是当我的代码不能完成这个功能的时候牛客网也给了我100分。(我考虑到了这种情况也实现啦)
今日,一题!