博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第k小整数
阅读量:5947 次
发布时间:2019-06-19

本文共 753 字,大约阅读时间需要 2 分钟。

题目描述:

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

 

输入:

第一行为n和k,第二行开始为n个正整数的值,整数间用空格隔开。

 

输出:

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

 

样例输入:

10 3

1 3 3 7 2 5 1 2 4 6

 

样例输出:

3

 

一开始想用set,但是内存超限。

然后请yangjingjing学长讲了一下,先看一下代码:

#include
int a[50000],n,k,x,cnt; int main() { scanf("%d%d",&n,&k); for (int i=1;i<=n;i++) { scanf("%d",&x); a[x]=1; } for (int i=1;i<=30000;i++) { if (a[i]==1) cnt++; if (cnt==k) { printf("%d\n",i); return 0; } } printf("NO RESULT"); return 0; }

第一个for是输出的同时记录一下添加进来的数有且只有一个,第二个for就按照从小到大的顺序录入(利用数组的本身的性质),所以下标1对的是数组的1,2就对的是2,所以……这个代码好啊!!!一定要记住啊!!!

转载于:https://www.cnblogs.com/Zhoier-Zxy/p/8067490.html

你可能感兴趣的文章
matlab-线性代数 判断 正交矩阵
查看>>
convert(一)—— 部署managed
查看>>
maven技术(一)软件安装与配置
查看>>
[转载] 古墓丽影2
查看>>
JPA(三) JPA API初探
查看>>
华为S5700系列交换机配置链路聚合LACP报错。
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
二进制安装kubernetes1.14.1初次尝试-02
查看>>
Java基础学习总结(14)——Java对象的序列化和反序列化
查看>>
linux系统管理---账号与权限管理
查看>>
我的友情链接
查看>>
Android Target unknown and state offline
查看>>
润乾报表使用EXCEL数据源的方法及改进
查看>>
java并发编程基础
查看>>
我的DOS命令路径定义错了
查看>>
应用SELinux中的目标策略限制进程运行
查看>>
html5页面点击和左右滑动页面滚动
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
TCP/IP三次握手详细过程
查看>>