腾讯音乐笔试

第一题:字符串
给定一个只包含小写字母字符串,每次可以选择两个相同的字符删除,并在字符串结尾新增任意一个小写字母。
请问最少多少次操作后,所有的字母都不相同?

字符串长度<1e3

input:
abab

output:
2

第一次把2个a变成f,第二次把2个b变成b。得到fb,每个字母都不相同,最少操作次数为2。

public static int minOperations (String str) {
    int[] nums = new int[26];
    for (int i = 0; i < str.length(); i++) {
        nums[str.charAt(i) - 'a']++;
    }
    int cnt = 0, kinds = 0;
    for (int i = 0; i < 26; i++) {
        cnt += nums[i] / 2;
        kinds += nums[i] % 2;
    }
    if (cnt + kinds <= 26) {
        return cnt;
    } else {
        int a = 26 - kinds;
        return 2 * cnt  - a;
    }
}
第二题:
题目描述
已知一个二叉树的先序遍历序列和中序遍历序列,但其中一些节点的值可能相同。
请你返回所有满足条件的二叉树。二叉树在数组中的顺序是任意的。

input:
[1,1,2],[1,2,1]

output:
[{1,1,#,#,2},{1,#,1,2}]

public ArrayList<TreeNode> getBinaryTrees (ArrayList<Integer> preOrder, ArrayList<Integer> inOrder) {
    ArrayList<TreeNode> temp = dfs(preOrder, inOrder);
    System.out.println(temp.size());
    return temp;
}

public ArrayList<TreeNode> dfs(ArrayList<Integer> preOrder, ArrayList<Integer> inOrder) {
    ArrayList<TreeNode> ans = new ArrayList<>();
    if (inOrder.size() == 0) {
        return ans;
    }
    int rootVal = preOrder.get(0);
    for (int i = 0; i < inOrder.size(); i++) {
        int k = inOrder.get(i);
        if (rootVal == k) {
            ArrayList<Integer> inOrderLeft = new ArrayList<>();
            ArrayList<Integer> inOrderRight = new ArrayList<>();
            ArrayList<Integer> preOrderLeft = new ArrayList<>();
            ArrayList<Integer> preOrderRight = new ArrayList<>();
            if (i > 0) {
                int sum = 0;
                for (int z = 0; z < i; z++) {
                    inOrderLeft.add(inOrder.get(z));
                    sum += inOrder.get(z);
                }
                for (int z = 1; z <= i; z++) {
                    preOrderLeft.add(preOrder.get(z));
                    sum -= preOrder.get(z);
                }
                if (sum != 0) {
                    continue;
                }
            }
            if (i < inOrder.size()) {
                for (int z = i + 1; z < inOrder.size(); z++) {
                    inOrderRight.add(inOrder.get(z));
                    preOrderRight.add(preOrder.get(z));
                }
            }
            List<TreeNode> left = dfs(preOrderLeft, inOrderLeft);
            List<TreeNode> right = dfs(preOrderRight, inOrderRight);
            if (left.size() > 0 && right.size() > 0) {
                for (TreeNode l : left) {
                    for (TreeNode r : right) {
                        TreeNode root = new TreeNode(rootVal);
                        root.left = l;
                        root.right = r;
                        ans.add(root);
                    }
                }
            } else if (left.size() > 0) {
                for (TreeNode l : left) {
                    TreeNode root = new TreeNode(rootVal);
                    root.left = l;
                    ans.add(root);
                }
            } else if (right.size() > 0) {
                for (TreeNode r : right) {
                    TreeNode root = new TreeNode(rootVal);
                    root.right = r;
                    ans.add(root);
                }
            } else {
                TreeNode root = new TreeNode(rootVal);
                ans.add(root);
            }

        }
    }
    return ans;
}

第三题:不会


#腾讯音乐娱乐笔试##腾讯音乐2023秋招笔试心得体会#
全部评论
第二题没看懂大大的思路
点赞 回复 分享
发布于 2022-09-09 00:55 广东
求文字思路
2 回复 分享
发布于 2022-09-09 05:40 江苏
面试了么老哥
点赞 回复 分享
发布于 2022-09-26 13:12 辽宁
有进面了吗
点赞 回复 分享
发布于 2022-09-23 22:41 广东
第三题是递归,递归函数的输入是根节点,递归的返回值是当前节点的左右子树权值和: left1 = dfs(root.left) right1 = dfs(root.right) 如果left1更大,那么root.left.val=1,root.right.val=(left1+1-right1) 如果right1更大,那么root.right.val=1,root.left.val=(right1+1-left1) 如果两者相等,那么root.right.val=1,root.left.val=1 递归返回return root.left.val+left1+root.right.val+right1 最终返回 (dfs(root)+1)%(10**9+7)
点赞 回复 分享
发布于 2022-09-09 10:41 甘肃
我超校友,加个v?
点赞 回复 分享
发布于 2022-09-09 08:14 广东

相关推荐

03-25 14:47
已编辑
门头沟学院 Java
实习项目拷问实习期间项目挑一两个重点说一下如何定位慢sql这是一个什么联合索引为什么不给中间的status的填进去?好问题表的数据量有没有分表,怎么分表?按月分表,那么分页查询怎么查?前端有传时间范围单表查询时长?10ms到50ms深分页怎么处理?缓存优化怎么做的?主动更新缓存失败?主动更新的并发问题?用的是什么消息队列?消息丢失怎么处理?这个系统可用性如何考虑的?定时脚本:解决入队失败,以及消费这个回调失败&nbsp;,缓存降级缓存命中率?基础知识服务器如何识别http的请求头和请求体的?cookie在http中如何传输&nbsp;?如何实现一个线程安全的任务队列?数据库为什么要有连接池?刚才你说到数据库连接池为了防止链接频繁的创建销毁,那么像http服务器,rpc服务器他们的连接就是频繁创建和销毁没有连接池,那为什么数据库需要连接池呢?答:因为数据库连接是昂贵、有状态、数量有限的资源,而&nbsp;HTTP/RPC&nbsp;是轻量、无状态、可快速销毁的,所以数据库必须用连接池来复用,HTTP&nbsp;不需要。1.&nbsp;连接成本完全不一样HTTP&nbsp;连接:只是一个&nbsp;TCP&nbsp;短连接,用完就断,没有状态、没有认证、没有会话上下文,创建销毁非常轻。就算用&nbsp;HTTP&nbsp;长连接,也是复用&nbsp;TCP,不是复用业务状态。数据库连接:是有状态的重量级连接:TCP&nbsp;握手&nbsp;+&nbsp;用户名密码验证&nbsp;+&nbsp;权限检查&nbsp;+&nbsp;会话初始化(事务、锁、缓存区)。这个成本是&nbsp;HTTP&nbsp;的&nbsp;几十倍上百倍。2.&nbsp;生命周期完全不同HTTP&nbsp;请求:一次请求一次连接,用完即丢,非常短暂。数据库连接:一旦建立,可以持续复用很久,完全没必要每次执行&nbsp;SQL&nbsp;都重新建连接。3.&nbsp;数据库对连接数量极其敏感数据库有严格连接上限(MySQL&nbsp;默认&nbsp;151)。连接多了,数据库会:内存暴涨、线程爆炸、锁冲突、直接夯死。而&nbsp;HTTP&nbsp;服务器扛几万连接都没事,因为它是非阻塞、IO&nbsp;多路复用,不占很重的资源。算法题:数组平方后的不同数
查看21道真题和解析
点赞 评论 收藏
分享
04-14 11:25
已编辑
清华大学
本人本科西安交大,直博生,今年找工作,给自己记录一下:※&nbsp;已拿到offer-比特大陆-嵌入式硬件工程师笔试-已笔试-笔试通过√面试-3-26,已通过√二面-3-27,已通过√背调阶段√HR面-4-7√总裁面+HR面&nbsp;√面试非常顺利,谈薪终面也没有battle的过程,我全程听总裁和HR给我定薪方案,超过了我自己的预期。非常愉快的投递和面试体验,能够感受到这个公司满满的诚意。————————————————————————————————————————北京柚果科技,面议薪资,户口争取,脑机接口4-8上午10:30面试,已面试,没有后续,感觉挂了————————————————————————————————————————北京四方&nbsp;年包50以上,户口,硬件投递简历————————————————————————————————————————易方达基金-前沿科技研究员4-16周四面试,早十点,简历3,成绩证明1份。【面试地址】北大博雅国际酒店大学堂1A厅(北京市海淀区中关村北大街127号)————————————————————————————————————————中铝集团-科研项目管理岗线上笔试-4-11————————————————————————————————————————泰康医疗-设备耗材管理岗/医学工程师岗位4-15面试,下午一点前到泰康集团大厦(北京市朝阳区景辉街16号院1号楼)————————————————————————————————————————千帆科技,100左右,户口,弹性上班投递简历————————————————————————————————————————润科通用,50-80,户口,仿真建模————————————————————————————————————————纳溪科技,出差出国,20以上,户口不一定,售前工程师,长远发展。下周现场聊————————————————————————————————————————智冉,脑机接口,北京户口,薪水open,发邮件,投简历。————————————————————————————————————————明朗万达,薪酬面议,咨询顾问,低一些。l。————————————————————————————————————————英博云,不考虑,低工资————————————————————————————————————————睿塔智能,硬件工程师,30-50————————————————————————————————————————中铝集团-科研项目管理岗线上笔试-4-11————————————————————————————————————————中华保险集团资产管理中心笔试,4-7之前————————————————————————————————————————中国广电-月薪1-2万线上投递————————————————————————————————————————中邮理财线上投递————————————————————————————————————————中粮集团线上投递——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————×阳光保险已线上笔试,估计挂了×脑虎科技&nbsp;50左右,上海,给户口,13薪3-26面试线上,通过√自己不想去上海,拒绝了×国际重工“青蓝计划”国考线上3-29,记错时间,没考××&nbsp;航天三院-挂了3-19晚上面试面试官说:专业不符,婉拒×电科投资-央企3-24面试+笔试,4-1告诉我“没通过”××长鑫存储-数字电路岗线上AI面试,已通过,3-17√4-1早上十点,已面试,估计挂了×广发证券&nbsp;投行医疗健康组实习实习答辩,已答辩,问得我一身汗,面了将近40分钟,挂了4-1心情记录:我的老天奶啊,已经找了第三周工作了,三个挂了,一个自己拒了,目前为止0个offer,没关系,工作总会有的,我现在最焦虑的是每周我们还要开组会,我还要汇报我每周干啥了。。。各位毕业季的博士们,是否还在搬科研砖???我啥也干不动了想原地毕业,然后有一个好工作来拥抱我。
点赞 评论 收藏
分享
评论
5
19
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务