美文网首页
2019字节跳动笔试

2019字节跳动笔试

作者: 悄敲 | 来源:发表于2019-03-16 12:33 被阅读0次

4道算法题,2个小时。

第1题

有面额1,4,16,64四种面额的硬币,面额1024的纸币,小明拿一张面额1024的纸币去买价格为 N (0<N<=1024)的商品,求需要找给小明的最少零钱数。
我的解答:这是一道典型的动态规划算法题,思路就是,如果我第一次找的零钱是硬币A,那么总的零钱数就是 1+ coinChange(amount-valueOfA),最少的零钱数就是 min(1+coinChange(amount-coin_1_value, 1+coinChange(amount-coin_2_value,...)) ,递归进行。(coinChange是求最少零钱数的函数,amount代表找零金额。)
代码如下:

const coinChange=function (N) {
        let amountMap=new Map();
        const helper=function (coinsArr, amount) {
            if(amount===0){
                return 0;
            }
            if(amountMap.has(amount)){
                return amountMap.get(amount);
            }
            let n=amount+1;
            for(let coin of coinsArr){
                let curCoinNum=0;
                if(amount>=coin){
                    let nextCoinNum=arguments.callee(coinsArr,amount-coin);
                    if(nextCoinNum>=0){
                        curCoinNum=nextCoinNum+1;
                    }
                }
                if(curCoinNum>0){
                    n=Math.min(curCoinNum,n);
                }
            }
            let result=(n===amount+1)? -1:n;
            amountMap.set(amount,result);
            return result;
        }
        const coins=[1,4,16,64];
        return helper(coins,1024-N);
    }

由于在递归求解过程中,会出现对同一找零金额的多次求解,故将已求解的找零金额所需最小零钱数存到一个散列表(amountMap)中,以减小时间复杂度。

第2题

字符串校对,原题目还包装了下,主人公是王大锤。。。
(1)三个同样的字母连在一起,则删除一个,如"AAA"=>"AA";
(2)两对一样的字母(AABB)连在一起,则去掉第二对的一个字母,AABB=>AAB;
(3)按照“从左到右”的优先规则,如AABBCC,虽然AABB和BBCC都是错误拼写,应该先修复AABB,结果为AABCC。
我的解答:我的答案通过率才15%,等我想好了再补上。

相关文章

  • 记字节跳动一面

    其实之前内推过字节跳动,不过那天做字节跳动笔试的时候状态不是很好(其实是自己太菜),所以笔试的时候被刷了。但是自己...

  • 字节跳动笔试

  • 2019字节跳动笔试

    4道算法题,2个小时。 第1题 有面额1,4,16,64四种面额的硬币,面额1024的纸币,小明拿一张面额1024...

  • 机会是留给有准备的人的

    字节跳动第一批笔试因为不知道,没有报,直接错过了字节跳动第二批笔试终于知道了,报了,发现题型是五道算法题,颇有难度...

  • 字节跳动笔试题

      昨天字节跳动笔试题目,没有ac一道,我很受打击。打算以后每笔试或面试一次,都仔细钻研,记录下自己的收获。也欢迎...

  • 【产品|校招】一些零碎的笔试感想……

    刚做完了字节跳动的笔试题,唯一的感受就是……“???就这样?这就完了?哇……笔试这么简单……(那面试得多残酷哇……...

  • 2019字节跳动前端实习生笔试面试

    公司:字节跳动岗位:前端开发实习生 1)笔试:一共有三次,我是第一次考的。时间:2019-03-16 10:00-...

  • 【值得收藏】javascript知识点详细讲解 • 第1篇《 t

    目录 什么是this的指向? call()、apply()、bind()用法 字节跳动笔试题 答案 英文每日来一句...

  • 字节跳动2019-8-11笔试

    第二题:小明和小红采用密码加密通信,每次通信有固定的明文长度n和加密次数k。 比如:密码二进制明文是1001010...

  • 2019字节跳动春招笔试题

    动态规划-最小硬币 数值最少由多少个硬币组成 字符串 lloo 去掉 o 成 llo AABBCC 去掉 B 成 ...

网友评论

      本文标题:2019字节跳动笔试

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