腾讯前端笔试20220424

太难辽😭先发篇帖子做一下记录,也请各位大佬分享见解思路!

第一题:放大镜(左边一倍图,右边二倍图,实现放大镜的功能)

2. 第二题:循环链表的最小字典序:
给定一个链表数组,数组中是每个链表的head节点
如 : [ {1, 2, 3}, {5, 7, 9}, {2, 3, 5}, {9, 10, 1, 2} ]
则组成的循环链表为 {1, 2, 3,  5, 7, 9,  10}
保证能组成一个循环链表;
该链表可以从环的任何一个位置断开,求字典序最小的断开方式对应的链表!


3. 第三题:股票买入卖出问题:
给定现金 m, 给定n天的股票单价数组 (长度为n)
每天最多买入一手股票,或者最多卖出一只股票,求最后一天结束后,我的最大资产(包括现金 + 股票)。

4. 数组扁平化:
给定数组arr,和层数 n,将原数组扁平化到n层;

如:[1, 2, 3, [4] ],  1
输出 [ 1, 2, 3, 4 ]

[ 1, 2, [3, [4, [5] ] ] ], 2
输出 [1, 2, 3, 4, [5]]
这是我的代码,没有通过:
let a = [1,[2,[3,[4]],5]];
let n = 2;

let dfs = (arr) => { 
    let len = arr.length;
    let  max = 0;
    for(let i = len - 1; i >= 0; i--){
        let a = arr[i];
        if(a instanceof Array){
            let ceng = dfs(a);
            if(ceng > n - 1){
                arr.splice(i, 1, ...a);
                ceng -= 1;
            }
            max = Math.max(max, ceng)
            
            
        }
    }
    return max + 1;
}

dfs(a);
print(JSON.stringify(a));

5. 拖动排序:
给定 前 n - 1 行,为 该元素的标识和序号;
序号是递增的,但不一定连续;
第 n 行,“a, b, c” 将标识为a的元素,挪到标识为 b 和 c 的元素之间。如果b为最后一个元素,则c = "0";

如:
a, 1
b, 3
c, 10
d, 15
a, d, 0

输出:
b, 1
c, 3
d, 10
a, 15


#腾讯笔试##笔试题目##前端##腾讯#
全部评论
楼主做出来多少,我只拿了32分😂
1 回复 分享
发布于 2022-04-24 22:28
第四题好像是拍平n次,而不是拍平到剩n层,我周围好多人都理解错了。。 发一个很简单的版本,已经ac function flatten(arr, k) {   for (let i = 0; i < k; ++i) {     arr = [].concat(...arr);   }   return JSON.stringify(arr); }
1 回复 分享
发布于 2022-04-25 10:40
第一个放大镜那个init中代码怎么写呀
1 回复 分享
发布于 2022-04-24 22:29
第四题,普通扁平化稍改就行了。 function flat(arr, d){     if(d === 0) return arr     let res = []     for(let i = 0;i < arr.length;i++){         if(Array.isArray(arr[i])){             res = res.concat(flat(arr[i], d - 1))         }else{             res.push(arr[i])         }     }     return res }
点赞 回复 分享
发布于 2022-04-24 23:06
想问问第五题有没有ac了的题解呀,我的只过了83.3%
点赞 回复 分享
发布于 2022-04-25 15:57
第一题:
点赞 回复 分享
发布于 2022-04-27 18:01

相关推荐

5 29 评论
分享
牛客网
牛客企业服务