第k小整数

Description

现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000。

Input

包含多组测试数据,每组测试数据第一行为n和k,第二行开始为n个正整数的值,整数间用空格隔开。

Output

第k个最小整数的值;若无解,则输出“NO RESULT”。

Sample Input

10 3

1 3 3 7 2 5 1 2 4 6

Sample Output

3

解决:还是数组的巧妙利用,如果还不会可以看看前两篇,具体代码如下:

import java.util.Scanner;
public class homework {
public static void Kmin(){
  int Kmin[]=new int[30001];
  int k=0;
  Scanner sc=new Scanner(System.in);
  System.out.println("input:");
  int n=sc.nextInt();
  int key=sc.nextInt();
  for(int i=0;i<n;i++){
   int temp=sc.nextInt();
   if(Kmin[temp]==0)
    Kmin[temp]=1;
  }
  for(int i=1;i<30001;i++){  //找到第K小的整数
   if(Kmin[i]!=0){
    k++;
    if(k==key){
     System.out.println(i);
    }
   }
  }
  
 }
 public static void main(String[] args){
 	Kmin();
  }
}

结果截图
在这里插入图片描述大杂烩的前三篇都是利用了·数组的特性,数组的下标表示元素的值,数组里存放的是有特殊含义的数组,第一篇存放的是数字出现的次数,达到去重的效果,第二篇存放的还是数字出现的次数,达到查找出现次数最多的目的,这一篇也一样。三篇都充分利用了数组是一片连续有序的空间这一特性,所以要多用这种特性来解决问题,但切记不可在需要空间过大的问题里使用,这终归是一种空间换时间的做法,故此道虽好但损内存。
加油哦!

发布了54 篇原创文章 · 获赞 8 · 访问量 5320

猜你喜欢

转载自blog.csdn.net/qq_43411555/article/details/102881596
今日推荐