美文网首页笔试&&面试经验算法编程
多语言解编程题之数列第N大

多语言解编程题之数列第N大

作者: 剪影Boy | 来源:发表于2017-08-28 15:39 被阅读6次

    给予一个整数数列,找出第N大的那个数。
    样例输入:45 67 33 21(换行)2
    样例输出:45

    JavaScript(Node)实现

    const readline = require('readline');
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    let flag = true;
    let str, idx;
    rl.on('line', function(line) {
        if (flag) {
            str = line;
            flag = false;
        } else {
            idx = line;
            console.log(findBigNum(str, idx));
            flag = true;
        }
    });
    
    function findBigNum(str, idx) {
        let arr = str.split(' ').map(val => +val);
        arr.sort((a, b) => b - a);
        return arr[idx - 1];
    }
    

    PHP实现

    <?php
        $handle = fopen("php://stdin", "r");
        $line = fgets($handle);
        $flag = true;
        while ($line !== "") {
            if ($flag) {
                $str = $line;
                $flag = false;
            } else {
                $idx = $line;
                echo findBigNum($str, $idx) . "\n";
            }
            $line = fgets($handle);
        }
        fclose($handle);
    
        function findBigNum($str, $idx) {
            $arr = array_map("intval", explode(" ", $str));
            rsort($arr);
            return $arr[$idx - 1];
        }
    

    C++实现

    #include <iostream>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int findBigNum(string str, string idx) {
        stringstream iss(str);
        int number;
        vector<int> vec;
        while(iss >> number) {
            vec.push_back(number);
        }
        sort(vec.begin(), vec.end(),
            [](const int a, const int b) {
                return b < a;
            }
        );
        return vec[atoi(idx.c_str()) - 1];
    }
    
    int main() {
        string line;
        bool flag = true;
        string str, idx;
        while (getline(cin, line)) {
            if (flag) {
                str = line;
                flag = false;
            } else {
                idx = line;
                cout << findBigNum(str, idx) << endl;
                flag = true;
            }
        }
        return 0;
    }
    

    以上。

    个人技术博客 biebu.xin,原文链接——多语言解编程题之数列第N大

    相关文章

      网友评论

        本文标题:多语言解编程题之数列第N大

        本文链接:https://www.haomeiwen.com/subject/krrgdxtx.html