题解 | 寻找第K大

寻找第K大

https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param a int整型一维数组 
 * @param aLen int a数组长度
 * @param n int整型 
 * @param K int整型 
 * @return int整型
 */
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
int findKth(int* a, int aLen, int n, int K ) {
    // write code here
    int *arr=(int*)malloc(sizeof(int)*n);
    memcpy(arr,a, sizeof(int)*n);//将a数组拷贝到arr中,修改原数组容易崩溃溢出
    for(int i=0;i<K;i++){
        int maxIndex=0;
        for(int j=1;j<n;j++){//maxIndex初值为0,j直接从1开始
            if(arr[j]>arr[maxIndex]){
                maxIndex=j;
            }
        }
        if(i==K-1){
            int res=arr[maxIndex];
            free(arr);
            return res;
        }
        arr[maxIndex]=INT_MIN;//找到一次最大值将它变成极小值
    }
    free(arr);
    return -1;
}

全部评论

相关推荐

哈基米南北绿豆114...:大三下民办二本通信工程转码,崩溃的是我,不要问我为什么行情这么差还转码,计算机只是日暮西山,通信工程是漫漫长夜😭查看图片
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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