题解 | #查找第K小数#

查找第K小数

http://www.nowcoder.com/questionTerminal/204dfa6fcbc8478f993d23f693189ffd

#include<iostream>
#include<queue>
using namespace std;

int main(){
  int n,k;
  while(scanf("%d",&n)!=EOF){
    priority_queue< int,vector<int>,greater<int> >myque;//小根堆的优先队列
    int x;
    while(n--){
      scanf("%d",&x);
      myque.push(x);
    }
    scanf("%d",&k);
    
    for(int i=1;i<k;i++){
      int m=myque.top();
      myque.pop();
      while(m==myque.top())myque.pop();//直到top与刚出队的元素不同
    }
    printf("%d\n",myque.top());
  }
  return 0;
}
全部评论

相关推荐

LXXXXd:有点杂,想搞自动化的话没必要把法律的经历写上去
点赞 评论 收藏
分享
09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务