• 题解——第k个小的整数


    #include <iostream>

    #include <cstdio>

    #include <algorithm>

    using namespace std;

    int a[100];

    int main()

    {

        int n,k;

        cin>>n>>k;

        for(int j=0;j<n;j++)

            cin>>a[j];

        sort(a,a+n);    //左闭右开,一般:(首地址,首地址+元素个数)即可

        int sum=0,i=0;     //引入sum用来去重

        for(i=0;i<n-1;i++)  //i=n-1时,跳出循环

        {

            if(sum==k){

                cout<<a[i-1];

                return 1;

            }

            if(a[i]!=a[i+1])

                sum++;

            if(a[i]==a[i+1])

                ;

        }                   //此时i=n-1;

        if(sum==k){         //因为在i=n-1时跳出,所以倒数第二个还没判断,这里补充判断

            cout<<a[n-2];

            return 1;

        }

        if(a[n-2]!=a[n-1])  //对最后一个元素进行讨论

        {

            sum++;

            if(sum==k){

                cout<<a[n-1];

                return 1;

            }

        }

        cout<<"No";   //前面都没有return,说明数组中没有符合条件的数

        return 0;

    }

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    用Sqoop实现数据HDFS到mysql到Hive
    hdfs的文件结构
    搭建Hadoop-1.2.1&hbase-0.94.17&hive-0.9.0&centos6.8_x64集群
    缩减表空间碎片
    MySQL8.0.12源码编译安装_centos7.3
    Mysql8.0.18的源码安装
    mysql5.7.31二进制安装_centos7
    个人windows开发环境风格
    linux shell中那些奇奇怪怪的语法
    关于上线的一些事儿
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13497421.html
Copyright © 2020-2023  润新知