AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 吐槽
  • App
  • 登录/注册

AcWing 786. 第k个数    原题链接    简单

作者: 作者的头像   acwing_84396 ,  2023-09-19 18:58:06 ,  所有人可见 ,  阅读 27


0


题目描述

blablabla

样例

#include<iostream>
using namespace std;
int a[100000];
int quick(int l,int r,int k)
{
    if(l>=r)
    return a[l];
    int i=l-1,j=r+1,x=a[l];//l或者l+r>>1都行,不能为r,是r最后剩两个数且这两个数从小到大排时分不了
    while(i<j)
    {
        do i++;while(a[i]<x);
        do j--;while(a[j]>x);
        if(i<j) swap(a[i],a[j]);
    }
    int sl=j-l+1;//sl为左边的个数,每一轮递归l,r值都会变,要求个数,l不是一直为1
    if(k<=sl)
    {
        return quick(l,j,k);
    }
    else
    {

        return quick(j+1,r,k-sl);
    }
}
int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    int ans=quick(1,n,k);
    printf("%d",ans);
    return 0;
}


算法1

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla

算法2

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息