首页 > 试题广场 >

查找第K大的元素

[编程题]查找第K大的元素
  • 热度指数:11087 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个无序的整型数组A[n],数组大小大于等于3,允许有值相同的元素;请设计算法找到该数组排序后第三大的元素值并输出.

输入描述:
一个非空的整数数组(至少有3个元素,可正可负)


输出描述:
第三大的元素值
示例1

输入

[1,2,3,4,5]

输出

3
示例2

输入

[1,1,2,2,3]

输出

2
示例3

输入

[6,5,4,4,1,2]

输出

4
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

var arr = [];
rl.on('line', line => {
    arr = JSON.parse(line.trim());
    arr.sort((a, b) => b - a);
    console.log(arr[2]);
})
发表于 2020-03-21 22:57:59 回复(0)
JavaScript(Node) 😎题目:有赞👍-查找第k大元素(sort)
const readline = require('readline')
const rl = readline.createInterface({
    input: process.stdin,
    ouput: process.stdout
})
let inArr = []
rl.on('line',line=>{
    if(!line) return
    inArr.push(line.trim())
    if(inArr.length === 1){
        let a = inArr[0]
        a = JSON.parse(a)
        a.sort((a,b) => b-a)
        console.log(a[2])
    }
})


发表于 2020-03-01 17:54:27 回复(0)
var input = readline().replace(']','').replace('[','').split(',');
for(var i=0;i<input.length;i++){
    input[i] = Number(input[i]);
}
var thirdMax = function(nums) {
    if(nums.length<3){
        return Math.max.apply(null,nums);
    }
    var maxFirst = Number.NEGATIVE_INFINITY;
    var maxSecond = Number.NEGATIVE_INFINITY;
    var maxThird = Number.NEGATIVE_INFINITY;
    for(var i=0;i<nums.length;i++) {
        if(nums[i]>maxThird) {
            maxThird = nums[i];
        } 
        if(maxThird>maxSecond){
            var temp = maxSecond;
            maxSecond = maxThird;
            maxThird = temp;
        }
         if(maxSecond>maxFirst){
            var temp2 = maxFirst;
            maxFirst = maxSecond;
            maxSecond = temp2;
        }
        
        if(maxThird>maxFirst) {
            var temp3 = maxThird;
            maxThird = maxFirst;
            maxFirst = temp3;
        }
    }
    if(maxThird>maxFirst) {
            var temp = maxThird;
            maxThird = maxFirst;
            maxFirst = temp;
    }
    return maxThird;
};
print(thirdMax(input))
// 输入案例是一个字符串 我也是醉了
发表于 2018-12-13 20:21:11 回复(0)