猿辅导面试-算法类

2018.6 猿辅导前端开发面试     前晚通宵升级到很晚,整个人是脑袋发懵到的公司楼下,地点很好找,就是下午两点的大太阳真的是把人晒晕了。哈哈,言归正传,这家公司很尊重每一个面试者,整个面试过程很舒服。每个面试官应该是要求限时在一小时之内,我这次一共是经过了三轮面试官的洗礼(哈哈,一次性进行完整个技术面,我还蛮喜欢这种方式的,减少了面试者频繁来面试的时间),下面就对我记得的面试内容整理一下,能记多少真是不好说,毕竟我现在996... 阅读详情

一个小时,两道算法题

第一题:列表加和

        给定一个int类型的列表(如[1, 9, 8, 8])和一个加和元素(如34),计算列表元素所组成的数字(1988)与加和元素相加后的结果(1988+34=2022,此处仅作为讲解示例,实际操作中不允许这样执行),并以列表的形式输出([2, 0, 2, 2])。

要求:

        必须是在列表状态下进行操作,不能将列表中的元素重组为一个整数(如1988)与加和元素进行计算。

示例:

[1, 9, 8, 8] + 34 -> [2, 0, 2, 2]

[2, 7, 3, 9] + 25798 -> [2, 8, 5, 3, 7]

解题思路:

        将加和元素拆分成列表,然后从后往前,按照加法计算公式,与列表中的元素对应相加,若大于等于10则进1,并将大于10的部分存储在结果列表中。

        最后,将结果列表逆序输出即可。代码如下


def calc(ans, ads):
    ads = list(map(int, str(ads)))
    rst = []
    nums_ans = len(ans)
    nums_ads = len(ads)
    r = 0
    index_ans = nums_ans - 1
    index_ads = nums_ads - 1
    while index_ads >= 0 and index_ans >= 0:
        temp = ans[index_ans] + ads[index_ads] + r
        if temp >= 10:
            rst.append(temp % 10)
            r = 1
        else:
            rst.append(temp)
            r = 0
        index_ans -= 1
        index_ads -= 1

    for j in range(index_ans, -1, -1):
        temp = ans[j] + r
        if temp >= 10:
            rst.append(temp % 10)
            r = 1
        else:
            rst.append(temp)
            r = 0

    for j in range(index_ads, -1, -1):
        temp = ads[j] + r
        if temp >= 10:
            rst.append(temp % 10)
            r = 1
        else:
            rst.append(temp)
            r = 0
    return rst[::-1]
    pass


if __name__ == '__main__':
    ans = [1, 9, 8, 8]
    ads = 3402
    rst = calc(ans, ads)
    print(rst)
    pass

第二题:求树的直径

给定一棵二叉树,请找出其最长路径,并输出路径上的边的数量。

如下所示,第一棵树的最长路径为4-2-1-3,长度为3。第二棵树的最长路径为8-6-4-2-5-7-9,长度为6。

 

解题思路:

遍历所有父节点,统计其左右孩子的数量,并相加,即为该父节点对应的路径长度。依次递归调用即可。

其中需要注意的是,每一次遍历子节点,返回数值给父节点的时候,需要加1(对于父节点而言,当前节点本身也是其父节点的一个子节点);并且,因为是统计路径,所以对于同时含有左右子节点的节点,要返回左右子节点中的最长路径,而不是该节点所包含的路径。

代码如下:


class Node:

    def __init__(self, left=None, right=None, val=None):
        self.val = val
        self.left = left
        self.right = right

    pass


def find(root):
    if root is None:
        rst[root] = 0
        return 0
    if root.left is None and root.right is None:
        rst[root] = 0
        return 1

    count_left = find(root.left)
    count_right = find(root.right)
    count = count_left + count_right
    # print('count = ', count)
    rst[root] = count

    # +1,是因为要加上作为父节点的子节点的自己
    if count_right != 0 and count_left != 0:
        # 对于父节点而言,统计最长路径只需要左右子树的最长路径即可
        return max(count_left, count_right) + 1    
    else:
        return count+1  # 若某个子树为None,则直接返回非None子树的路径长度
    pass


def buildTree():
    left = Node(val=4)
    right = Node(val=5)
    root = Node(left, right, 2)
    right = Node(val=3)
    root = Node(root, right, val=1)

    return root
    pass


def buildTree2():
    left = Node(val=8)
    root = Node(left, val=6)
    left = Node(root, val=4)

    right = Node(val=9)
    right = Node(left=right, val=7)
    right = Node(right=right, val=5)
    root = Node(left, right, val=2)

    right = Node(val=3)
    root = Node(left=root, right=right, val=1)

    return root
    pass


if __name__ == '__main__':

    root = buildTree()
    # root = buildTree2()

    rst = {}
    find(root)
    cnt_max = 0
    for ky in rst.keys():
        if ky is None:
            continue
        val = rst[ky]
        if cnt_max < val:
            cnt_max = val
        # print('key:{}, val:{}'.format(ky.val, val))
    print('count_max:', cnt_max)
    pass

 以上,即是今天面试的算法题目,不难,只是自己不够娴熟,凉凉了?

一年半经验参加前端面试作业帮2面&猿辅导3面,道理我都懂,可猿辅导你3面就不能轻点虐嘛?! 如果公司面试难度评估6颗星是最高的,那猿辅导相比作业帮是6颗星直接拉满,没有对比就没有伤害,不信往下看。 阅读详情

相关推荐

面经分享!蚂蚁金服三面被拒,重拾起鼓四面猿辅导成功拿下offer!

前言 一直有小伙伴要我分享面经,说自己想面互联网公司,无奈经验太少想多看看其他人是怎么面的。我这两天刚好和一个刚拿到猿辅导offer的朋友吃了个饭,他向我说了说自己的面试经历。粉丝朋友是末流211毕业的,工作了两年了!然后五月份左右的时候辞职的,辞职之后问我要了面试资料进行学习,对自己的知识点进行梳理,查漏补缺!在上个月先是去面了蚂蚁金服,不得不说的是蚂蚁金服上市之后门槛是真的高!他面到了第三面被拒了。被拒之后找我一起吃了个饭,我给他重新规划了一下。直到前两天他又找到了我,说自己已经拿到了猿辅导的offer

欢迎您访问我的公众号【前程有光】 3843

5-29 猿辅导面经

算法题1: 二叉树的层次遍历zigzag形,请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。其要求输出的样式是:[[1], [3,2], [4,5,6,7]]。和上段中的题目相比,这道题不仅要求按序输出节点值,还要求包含以下信息: 1. 每一层所包含的树节点; 2. 偶数层的树节点需倒序我们同样可以利用...

ethantequila的博客 4380

从猿辅导一面挂,怒刷1000道Android面试题,成功入职字节跳动(120W/年总包)!

缘起 从18年毕业至今,就职过两家公司,大大小小项目做了几个,非常感谢我的两位老大,在我的android成长路上给予我很多指导,亦师亦友的关系。 从年前至今参加面试了很多公司,从猿辅导一面挂,我深刻意识到Android开发内卷太严重了,面试都是需要背八股文,狂刷leecode。最后顺利拿到了字节跳动offer。总结下经验,也是对过去的一个回顾和总结吧。 猿辅导(一面挂) 自我介绍 怎么学Android的 聊了聊项目 项目中涉及到了跨进程通信,为什么选广播而不是别的跨进程通信方式 不局限于

AndroidAlvin的博客 2176

猿辅导算法题面经一

一、二叉树中和为某一值的路径二、数组中的第K个最大元素 一、二叉树中和为某一值的路径 算法:先序遍历+回溯 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { List.

qq_36908783的博客 853

猿辅导2024校招教育产品经理面试问答

《猿辅导2024校招教育产品经理面试问答》 引言 在当今数字化时代,教育行业的变革与发展尤为引人注目。猿辅导作为中国领先的在线教育平台,其2024校招教育产品经理面试成为了众多求职者的关注焦点。本文将带领读者深入剖析猿辅导2024校招教育产品经理面试的关键内容,从面试准备到面试技巧,全面

AI天才研究院 935

猿辅导2019校招技术类笔试题.docx

猿辅导2019校招技术类笔试题

猿辅导(实习800/天)面试算法题详解

不是标题党:猿辅导的实习薪资确实开到了800一天,度娘截图如下: 博主第一次听说猿辅导这家公司也是因为逆天的实习薪资,也正是因为这个原因博主才投递了简历,并且在拿到满意的offer之后依旧去参加了面试。仅仅因为好奇,想体验实习800一天的公司面试。 博主8月中上旬参加了猿辅导的在线笔试,猿辅导的笔试时间很紧张,四十多分钟好像:选择题和两道编程题。编程题不能跳出考试页面,相当于记事本撕代码,时间很...

我的博客 1万+

MVP学习相关代码

MVP的设计模式,有关于Android,适合新手练习学习,来源于互联网。

猿辅导算法一面

过程 整体面试体验很好,期待二面,虽然感觉有点凉。 1、自我介绍 2、项目 展开问了一些细节,这个大家自己根据自己的项目准备就好,没有太多参考价值。主要就我里面用到一个EWC正则,如何计算Fisher Information,以及在计算机中如何实现积分,因为Fisher Information是需要求一阶导和二阶导,并且进行积分消去参数x。然后这一块着实没准备,嗯,应该去看看源码。 Fi...

wanghan0801的博客 3646

dummy机械臂代码学习(六)

CLI-Tool文件夹下又包含四个子文件夹,以及一个gitignore文件、一个run_shell.py的python文件、一个run.bat文件和一个zadig exe文件。库解析命令行参数,并根据不同的命令执行相应的操作。Zadig是一个用于Windows操作系统的开源工具,它的主要功能是安装和配置USB驱动程序。的目的呢就是确保在版本控制过程中,不必要的或自动生成的文件被忽略掉,来保持代码仓库的干净和整洁。,DummyStudio的软件作者已放在GitHub,我们主要看CLI-Tool文件夹就行。

jumaohhh的博客 1432

Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

经典论文Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的学习与编程仿真,提供源码

m0_59701926的博客 1235

猿辅导服务端开发面试--秋招正式批

一面 自我介绍 实验室的研究方向 项目介绍,详细一点,然后反问里面的实现 问adhoc相关内容 网络层协议有哪些? RIP和OSPF区别?各自的过程说一下 应用层协议有哪些? 挑一个说一下,反问了telnet,基于什么协议? tcp的可靠性如何实现?有序传输如何实现? java: linkedHashMap与hashMap有什么区别?维护的顺序是key还是value的顺序? java保证线程安全的方式? synchronizied是可重入的吗?什么是可重入? 数据库: 对什么数据库比较熟悉? 四个事务隔离级

rainMan的博客 2760

深入解析Linux Suspend/Resume机制——从用户态到内核态的完整流程

本文深入解析Linux Suspend/Resume机制,从用户态触发到内核态执行的完整流程。详细介绍了三种挂起模式(Freeze、Standby、Suspend to RAM)的实现原理,包括系统调用入口、状态验证、设备挂起流程及平台相关操作。同时提供实战调试技巧,帮助开发者解决电源管理中的常见问题。

weixin_29313239的博客 442

猿辅导(实习800 天)面试算法题详解

不是标题党:猿辅导的实习薪资确实开到了800一天,度娘截图如下: 博主第一次听说猿辅导这家公司也是因为逆天的实习薪资,也正是因为这个原因博主才投递了简历,并且在拿到满意的offer之后依旧去参加了面试。仅仅因为好奇,想体验实习800一天的公司面试。 博主8月中上旬参加了猿辅导的在线笔试,猿辅导的笔试时间很紧张,四十多分钟好像:选择题和两道编程题。编程题不能跳出考试页面,相当于记事本撕代码,时间很...

weixin_33805743的博客 898

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4143

如何创建 SAP ABAP CDS View 的 Association

所以本文我们虽然学习了如何创建 SAP CDS View 的 association,知道了 association 是用来在 CDS View 里将两张数据库表关联起来,但根本不知道怎么使用这个 association. 而且从 association 的写法来看,似乎和本教程之前介绍 inner join,left join 这些数据库表的连接操作没什么区别,都是根据两张表的 carrid 和 connid 字段相同进行的连接。只看到了我们在 CDS View 源代码实现里,放出来的四个字段。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 902

【NLP算法面经】拼多多、猿辅导、网易云音乐算法面试大乱斗(附大模型面题)

先介绍下个人情况,本科金融,辅修数学,研究生转应用统计,主要申算法去岗,从今年三月开始找暑期实习开始,一直看大佬们的各种面经,现在总结了一下7月至今的各种面试回报大家。以上是目前为止面的,总结来看,算法岗基本都是项目+机器学习、深度学习算法原理+手撕代码,个人手撕代码基本都能搞定,但是之前没什么项目经验,在快手实习之前也是偏数据分析的岗位,刚转到算法岗两周,也没什么能讲的,聊到项目就容易崩,非科班也没论文,申算法岗还是太难了。有空继续更新,希望能帮到大家。

一个程序猿的AI转型之路 1558

SKUA-GOCAD入门教程-第八节 线的创建与编辑7和8

本文介绍了曲线编辑操作的主要功能,包括曲线部分和区域的管理操作。在曲线部分操作方面,详细说明了如何合并、删除、移动和过滤曲线部分,支持精确或带公差的合并方式。在曲线区域操作方面,阐述了保留/删除区域点、移动区域点、保留/删除区域线段等操作。此外还介绍了节点连接功能,包括新增/删除连接、端点连接以及为曲线赋予地质特征的方法。

江洋大葱的博客 390

猿辅导技术岗算法题总结

\quad现在大多数公司面试都要手撕算法题,这些是应试的东西,大家一定要提前准备,如果不准备肯定很难通过。如下是去年秋招猿辅导的算法题总结,供大家参考。 1.栈排序 2.链表实现队列 3.最长连续递增序列 4.最长不连续序列 5.二维数组回行打印 6.无序数组构建一棵二叉排序树 7.一个数组实现两个栈 8.二叉树宽度 9.二叉树是否对称 10.链表m到n反转 11.一个n位数,现在可以删除其中任意k位,使得剩下的数最小 12.实现有符号大数链表加法,靠近头结点位置为高位 13.字符串横向改纵向 14.八皇后

qq_40438165的博客 2622

OpenHarmony可信执行环境:TEE模块源码分析与实现原理

TEE(Trusted Execution Environment)是OpenHarmony系统中的安全执行环境,用于提供隔离的安全执行环境,保护敏感数据和操作。OpenHarmony的TEE模块基于OpenTrustee实现,采用微内核架构,为系统提供可信执行环境支持。OpenHarmony TEE模块是一个复杂的安全系统,通过提供隔离的执行环境保护敏感数据和操作。

m0_67505153的博客 548

Codex 实战 Skills:自动采集一天之内的 Git 提交,一键排版成精美工作日报并发送邮件

特性手动撰写脚本辅助(仅聚合)AI 增强自动化(本文方案)时间成本高(30-60分钟/天)中(5-10分钟/天)低(<1分钟/天)内容质量依赖个人总结能力原始数据堆砌,缺乏提炼专业、结构化、有业务视角信息完整性易遗漏完整,但难以阅读完整,且经过分类筛选维护成本无低中(需维护 Skill 配置)可扩展性低中高(可轻松添加周报、月报)适用场景所有开发者初级开发者追求效率的高级开发者本文详细介绍了一种基于 Codex Agent Skills 的自动日报生成方案。

yueyeguzhuo的专栏 102

Java 后端面经 拿下蚂蚁美团头条猿辅导的秘诀

Java 后端面经 拿下蚂蚁美团头条猿辅导的秘诀1. 面试问题(Java 后端)猿辅导旷视(Python)去哪儿(Java)陌陌头条(Go)阿里快手美团腾讯(Java)思考面试三千问简历重要吗? 随便写行不行项目经历问吗?常见高频问题呢?需要刷题吗?面试结果可以问吗?一般几轮面试?平时工作划水, 面试临时抱佛脚行不行?仅仅看博客,把高频面试题搞懂行不行? (问题驱动式准备面试) 更多知识资料 :h...

于海强的博客 1808

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

猿辅导、贝壳面经

文章目录猿辅导服务端开发一面二面贝壳安全研发一面二面三面hr面 猿辅导本来觉得凉了,没心思写面经。今天竟然收到二面通过的短信了。。。那就写一下吧,不过时间有点久了,很多问题已经不记得了。 猿辅导服务端开发 一面 c++的内存分布,哪些区域是无法通过指针访问的,堆的内存碎片怎么处理。 面向对象和面向过程。 7层协议讲一下。 tcp和udp区别,适用场景。 数据库四大特性什么的,具体忘了,最后让写了...

YellowOne的博客 1093

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

猿辅导社招面试

猿辅导面试记录 2020年12月5日,跑去猿辅导那里面试了,是猎头找的我,然后就面了一面就走人了,整体下来,面试体验很好,不会的东西面试官还给讲解一番。 想来还是自己平时只知道做事,不注重个人成长。面试回忆的问题就下面那样 登录的整个流程,画图说清楚 JWT token和UUID的区别,为什么登录用的是jwt(UUID需要单独存储空间); ES的内容,static schema和dynamic schema的区别; DB的内容,主从隔离,业务场景需要写入后立刻读,怎么解决(主从同步:半同步和全同步); 算

龙大 1117

2020 JAVA后端面试算法题以及面试框架总结

4月份下旬的时候由于公司经济不景气倒闭了,经历了一波失业潮,休息了一个月,5月中旬开始重新找工作。半个月收到一些offer(某信,某康保险,某团,某学,某知名技术论坛等等。。。)。并且一边找工作一边总结了一下自己的知识体系和面试遇到的问题,现在放在这里共大家参考一下。 20年上半年真的太难了,海啸,地震,新冠病毒,虫灾,火灾等等。。。导致失业、股灾、暴乱。。。祝大家在20年都平平安安地活着。 标题 ...

无名后生 1369

java-4年-猿辅导面经

猿辅导面经: 一面 面试体验非常好,面试官上来就先做了自我介绍,非常友好 自我介绍 主要介绍最近的两段工作经历,我主要用了在工作中解决了哪些问题,涉及一些常见技术问题, 取得了什么样的成绩; 注意将最近的项目成绩做一个总结 面试官根据自己的项目介绍问了一些问题(耗时最长,灵活的涉及了一些八股文) 做个算法题 lru缓存 设计一个RPC框架,会从那几点考虑 猿辅导二面面经 1.自我介绍,离职原因,自我介绍提到了技改类,质量提升类专项,问到做这些专项的流程是什么样的,先做的什么,后做的什么?组织架构与服务划

azi_csdn的博客 1510
上一篇: 找出数组中前K个最小的数-Python实现
下一篇: 京东2020校招笔试题-算法工程师
赫连达
博客等级 码龄12年 153粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值