9.20字节跳动前端笔试第五场

第一题,生兔子问题。使用动态规划,斐波那契就可以得到,核心代码:

var rabbit = [1,1]
for(let i=2;i<=month;i++){
    rabbit[i] = rabbit[i-1] + rabbit[i-2]
}
return rabbit[month]

第二题,看到讨论区好多大佬都用的是KMP,我当时没写出来。刚才试了一段代码:
var myTest = function (str) {
    const len = str.length;
    for (let t = 1; t <= len / 2; t++) {
        // 从零开始  一个一个进行截取
        const item = str.slice(0, t);
        // 算出重复多少次才能够得到原本的字符串
        const count = len / item.length;
        if (Number.isInteger(count) && item.repeat(count) === str) {
            return item
        }
    }
    // 未找到 返回
    return str
}

自测,一万长度的字符串可以输出,耗时0.168s。但题目好像要求的是字符串长度最大1e8,求大佬给个KMP求解的题解。


第三题,计算器。死在了大叔计算,毕竟JavaScript里面精度问题和大数计算是个bug,最近虽然已经确认```BigInt可以直接使用,但是V12还不支持。

对于快速幂计算,没写出来。

#笔试题目##字节跳动#
全部评论
快速幂计算https://blog.csdn.net/sinat_39416814/article/details/108700773
1 回复 分享
发布于 2020-09-21 10:31
第三题,快速幂取模:(a^b) mod c = (a * a * a........)%c =  ((a%c)*(a%c)*(a%c)*.........)%c = (a%c)^b %c
点赞 回复 分享
发布于 2020-09-21 10:23
function multiplication(num1, num2) {   let pow = Math.pow(10, 9) + 7   return ((num1 % pow) * (num2 % pow)) % pow } function power(num1, num2) {   if (num2 == 0) return 1   if (num2 == 1) return num1   if (map.has(num2)) {     return map.get(num2)   }   let index =  Math.floor(num2 / 2)   let res = multiplication(power(num1, index), power(num1, num2 - index))   map.set(num2, res)   return res } 可以这样解吗?虽然最后0%,最后的那个测试用例有问题。可以帮我看看吗?
点赞 回复 分享
发布于 2020-09-21 10:57
第一题是全a吗,为啥我只有60%
点赞 回复 分享
发布于 2020-09-21 17:21
已经感谢信了呜呜呜,各位谁有面试通知的吗
点赞 回复 分享
发布于 2020-09-24 01:34
二面刚结束、自我感觉良好
点赞 回复 分享
发布于 2020-09-25 19:45

相关推荐

评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客企业服务