当前位置: 首页 > article >正文

前端算法小白日刷三题17

青训营还差几道题,今天将它做完,接下来应该要休息两周复习期末了,还有个前端大屏的项目,可能每天还会做一题这样

今日第一题:红包运气排行榜

  • 创建一个数组来存储每个人的信息,包括他们的名字和抢到的金额

  • 根据抢到的金额进行排序,如果金额相同则按照抢红包的顺序进行排序

function solution(n, s, x) {
    // 确保 n 等于 s 和 x 的长度
    if (n !== s.length || n !== x.length) {
        throw new Error("Input lengths do not match");
    }

    // 创建一个对象来存储每个名字的抢红包金额和原始索引
    let start = {};
    let cnt = {};

    for (let i = 0; i < n; i++) {
        if (!(s[i] in start)) {
            start[s[i]] = i;
        }
        cnt[s[i]] = (cnt[s[i]] || 0) + x[i];
    }

    // 对名字进行排序,排序规则是先按金额降序,金额相同则按原始索引升序
    let sortedNames = Object.keys(cnt).sort((a, b) => {
        if (cnt[b] === cnt[a]) {
            return start[a] - start[b];
        }
        return cnt[b] - cnt[a];
    });

    return sortedNames;
}

// 测试用例
function main() {
    console.log(JSON.stringify(solution(4, ["a", "b", "c", "d"], [1, 2, 2, 1])) === JSON.stringify(['b', 'c', 'a', 'd']));
    console.log(JSON.stringify(solution(3, ["x", "y", "z"], [100, 200, 200])) === JSON.stringify(['y', 'z', 'x']));
    console.log(JSON.stringify(solution(5, ["m", "n", "o", "p", "q"], [50, 50, 30, 30, 20])) === JSON.stringify(['m', 'n', 'o', 'p', 'q']));
}

main();

 今日第二题:数组元素之和最小化

function solution(n, k) {
    // write code here
    let num=0
    for(let i=1;i<=n;i++){
        num+=k*i
    }
    return num;
}

function main() {
    console.log(solution(3, 1) === 6);
    console.log(solution(2, 2) === 6);
    console.log(solution(4, 3) === 30);
}

main();
  •  这题虽然中等难度,但比上一题简单很多

最后一题:最少字符串操作次数

function solution(S) {
    // write code here
    if (!S) return 0
    let num = 0
    const map = new Map()
    for (let val of S) {
        if (map.has(val)) {
            map.set(val, map.get(val) + 1)
        } else {
            map.set(val, 1)
        }
    }
    for (let [val, num1] of map) {
        if (num1 == 1) {
            num+=0
        } else {
            num += Math.floor(num1 / 2)
        }
    }
    return num;
}

function main() {
    console.log(solution("abab") === 2);
    console.log(solution("aaaa") === 2);
    console.log(solution("abcabc") === 3);
}

main();

 


http://www.kler.cn/a/448786.html

相关文章:

  • MFC/C++学习系列之简单记录9——简单加法
  • UE5 猎户座漂浮小岛 12 技能 瞬移 重力控制
  • 【day11】面向对象编程进阶(继承)
  • 基于AT89C52单片机的6位电子密码锁设计
  • TDesign:NavBar 导航栏
  • 大数据机器学习算法和计算机视觉应用07:机器学习
  • 最全解决方案:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.
  • 基于微信平台的文玩销售小程序ssm+论文源码调试讲解
  • Restaurants WebAPI(四)——Identity
  • 241221面经
  • powershell使用积累
  • 一起学Git【第一节:Git的安装】
  • Llama 3 模型系列解析(一)
  • 王佩丰24节Excel学习笔记——第十七讲:数据函数
  • HTML中的Vue3解析!
  • Ubuntu 安装实时内核指南
  • 接口测试Day-02-安装postman项目推送Gitee仓库
  • Git配置公钥步骤
  • workman服务端开发模式-应用开发-gateway长链接端工作原理
  • List反转的方法
  • SpringBoot01
  • LeetCode 704.二分查找
  • AI的进阶之路:从机器学习到深度学习的演变(三)
  • 前端调试实践
  • Android 蓝牙Bluedroid线程池设计思路介绍
  • 浅谈怎样系统的准备前端面试