富途牛牛笔试

算法1 A 80% 题目阅读量非常大,虽说不算很难,但还有20%不知道是什么情况没考虑。

输入

测试数n

测试1 学生数 s1

接着是s1个学生排队信息str 5个信息 分别是

str[0]学生到达时间 str[1]学生强壮程度 str[2]打饭时间 str[3]吃饭时间 str[4]班会时间

排队持续按照:到达时间更早》更强壮》输入顺序优先 。意思是到达时间相同比强壮,都相同比谁输入次序先。

能否赶上班会条件:吃完饭的时间〈 班会时间,小于不能等于。

打饭时间是叠加的,聪明的同学如果发现自己不够时间,直接不排队,不会损耗时间。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let len = parseInt(await readline());
    for (let i = 0; i < len; i++) {
        let n = parseInt(await readline());
        let arr = [];
        for (let j = 0; j < n; j++) {
            arr.push((await readline()).split(" ").map((el) => parseInt(el)));
        }
        compute(n, arr);
    }
    function compute(num, data) {
        let sortData=data.map((el,i)=>[...el,i])
        sortData=sortData.sort((a,b)=>{
            if(a[0]==b[0]){
                if(a[1]==b[1]) return a[5]-b[5]
                else return b[1]-a[1]
            }else return a[0]-b[0]
        })
        let curTime=sortData[0][0]
        let str = new Array(num).fill(0);
        for(let i=0;i<num;i++){
            if(curTime+sortData[i][2]+sortData[i][3]<sortData[i][4]){
                str[sortData[i][5]]=1
                curTime+=sortData[i][2]
            }else{
                str[sortData[i][5]]=0
            }
        }
        console.log(str.join(''));
    }
})();

算法2 A100%

元音aeiou不换

辅音一个换三个:自己、最靠近自己的元音(字母表顺序)、自己的下一个辅音


const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let originStr = await readline();
    let yuan = ["a", "e", "i", "o", "u"];
    let fu = "bcdfghjklmnpqrstvwxyz".split("");
    let res = "";
    for (let i = 0; i < originStr.length; i++) {
        res += finds(originStr[i]);
    }
    function finds(str) {
        let temp = "";
        if (yuan.includes(str)) return str;

        temp += str;
        temp += findnext(str);
        temp += fu[(fu.indexOf(str) + 1)%fu.length];
        // console.log(str)
        // console.log(findnext(str))
        // console.log(fu[fu.indexOf(str) + 1])
        return temp;
    }
    function findnext(str) {
        let min = 99;
        let minstr = str;
        let cur = str.charCodeAt(0);
        yuan.forEach((el) => {
            let temp = Math.abs(el.charCodeAt(0) - cur);
            if (temp < min) {
                min = temp;
                minstr = el;
            }
        });
        return minstr;
    }
    console.log(res.length-originStr.length);
})();

#富途笔试#
全部评论
你的第一题是curTime的问题,你只考虑了第一个达到之前没有人打饭,需要把curTime=sortData[0][0];但是给每一个打饭之前,都要比较一下这个人的达到时间和curTime,若他的到达时间大于curTime,则要将curTime置为他的到达时间再开始计算。
1 回复 分享
发布于 2023-09-02 16:08 广东
佬 富途前端笔试只有算法吗
点赞 回复 分享
发布于 2023-09-07 20:47 广东

相关推荐

02-10 21:39
Java
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客企业服务