n个数里最小的k个 牛客网

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分。(我考虑到了这种情况也实现啦)

今日,一题!

发布了13 篇原创文章 · 获赞 0 · 访问量 847

猜你喜欢

转载自blog.csdn.net/kelexing4/article/details/105282682