• 题解——第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.
  • 相关阅读:
    Jquery 学习一
    响应式设计
    微信开发一
    Ajax 技术二
    Ajax 技术一
    SVN版本控制软件
    正则表达式概述
    编写小游戏:贪吃蛇
    POJ 3356 AGTC(DP-最小编辑距离)
    算法模板の字符串处理
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13497421.html
Copyright © 2020-2023  润新知