Java 一套拳法刷掉 n 个遍历树的问题 John 易筋 ARTS 打卡 Week 43
1. Algorithm: 每周至少做一个 LeetCode 的算法题
笔者的文章:
题目
Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.
Example 1:
Example 2:
Constraints:
Follow up: Could you do it without any loop/recursion in O(1) runtime?
递归解法
线性解法 O(1)时间复杂度
我将尝试解释其背后的数学原理:
首先,您应该了解:
然后让我们用一个例子来帮助解释。
然后x%9 =(2+ 3 + 4 + 5 + 6)%9
,请注意x = 2 * 10000 + 3 * 1000 + 4 * 100 + 5 * 10 + 6
所以我们有23456%9 =(2 + 3 + 4 + 5 + 6)%9
2. Review: 阅读并点评至少一篇英文技术文章笔者的文章:
笔者文章:
管理Riskified的数据科学部门需要大量招聘-我们已经增加了一倍以上我ñ不到一年的时间,和半。作为几个职位的招聘经理,我还阅读了很多简历。招聘人员可在7.4秒内通过简历进行筛选,并且在招聘了几年之后,我的平均时间相当快,但还不是那么极端。在此博客中,我将引导您完成个人启发式搜索(“作弊”),以帮助我筛选简历。虽然我不能保证其他人使用相同的启发式方法,并且每个角色在重要性上的不同角色也会有所不同,但是注意这些要点可以帮助您克服 CV 筛选阶段。此外,其中一些启发式方法可能看起来不公平,或者可能会忽略合格的候选人。我同意不投资简历的有才华的机器学习从业者可能会被此屏幕拒绝,但这是考虑时间的最佳折衷方案。请记住,一个备受追捧的职位可能会吸引一百或更多的简历。如果您想要一个高效的过程,则简历屏幕必须快速。以下是用于快速筛选数据科学简历的 7 种启发式方法:
1.之前作为数据科学家的经验
我将快速浏览您的简历,以查看您以前的职位,并查看标记为“数据科学家”的职位。还有其他一些相邻的术语(取决于我要聘用的职位),例如“机器学习工程师”,“研究科学家”或“算法工程师”。我不将“ Data Analyst”包含在此类别中,因为日常工作通常与 Data Scientist 的工作不同,并且 Data Analyst 头衔是一个极为宽泛的术语。如果您在目前的工作中从事数据科学工作,并且还有其他创造性的工作描述,那么将自己的头衔更改为数据科学家可能是您的最大利益。对于实际上是数据科学家的数据分析师来说,这可能是非常正确的。请记住,即使 CV 包含您所从事的项目的描述(并且包括机器学习),但 Data Scientist 以外的标题也会增加不必要的歧义。此外,如果您曾在该领域接受过数据科学训练营或全职硕士课程,则这可能会被视为您数据科学经验的开始(除非您之前曾担任过类似的角色,否则将在以后阶段提出问题) )。
2.以业务为导向的成就
理想情况下,我想阅读您的工作(技术方面)以及业务成果。缺乏能够以业务术语进行交流的精通技术的数据科学家。如果您可以共享您的工作所影响的业务 KPI,那在我的书中会大为赞赏。例如,表明您的模型在 AUC 方面的改进是可以的,但是解决因模型改进而带来的转换率提高意味着您“得到了”-最终,业务影响才是真正重要的。比较以下以相同的重点(技术性还是商业性)描述相同工作的替代方案:一个。银行贷款违约率模型-将模型的精确召回 AUC 从 0.94 改进到 0.96。b。银行贷款违约率模型-在保持恒定违约率的同时,将业务部门的年收入提高了 3%(每年 50 万美元)。
3.教育
您的正规教育是什么,在哪个领域。它是知名机构吗?对于较新的应届毕业生,我还将研究他们的 GPA 以及他们是否获得过任何卓越奖或荣誉,例如进入 Rector 或 Dean 的榜单。由于数据科学是一个广阔的领域,没有任何标准化的测试或必需的知识,因此人们可以采用各种方法进入该领域。在上一个博客中,我描述了进入该领域的3条主要途径,并根据您的教育程度和时间安排,确定您可能选择了哪一条。因此,时间安排有助于理解您的故事-您如何以及何时过渡到数据科学。如果您没有任何数据科学方面的正规教育,那很好,但是您需要展示该领域的工作记录和/或相似领域的高级学位。
4.布局/视觉吸引力
我看过一些漂亮的简历(为个人灵感而保存了其中的一些),但我还收到了缺少任何格式的文本文件(.txt)。从事简历工作可能会很痛苦,如果您选择数据科学作为自己的工作,那么很有可能您不喜欢在业余时间创建美学设计。无需过度投入,您确实想要寻找一个不错的模板,该模板使您能够在有限的空间内获得所有信息。明智地使用空间-拆分页面并突出显示不属于按时间顺序进行的工作/教育的特定部分很有用。这可以包括您熟悉的技术堆栈,自我项目列表,到 github 或博客的链接以及其他。一些简单的图标也可以帮助强调节标题。许多候选人在他们熟悉的每种语言/工具旁边使用 1-5 个星号或条形图。就个人而言,出于以下几个原因,我不是这种方法的忠实支持者:
这是非常主观的-您的“ 5 星”是否与其他人的“ 2 星”相同?
他们将语言与工具混合在一起,在最坏的情况下,他们将其与软技能结合在一起-说您在“领导力”课程中的“ 4.5 星”没有帮助。作为坚强的成长心态的信奉者,声称要最大限度地发挥技能(尤其是难以量化和难以掌握软技能)感到非常自负。
我还通过采取主观措施并将其转换为饼图(30%python,10%团队合作者等),进一步看到了这种方法的滥用。尽管这可能被认为是一种脱颖而出的创新方法,但它表明在不同图表的概念背后缺乏基本的了解。
这是我在视觉上吸引人的简历的两个示例,细节因匿名而模糊不清。
信用 Eva Mishor![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402235416647.png#pic_center =450x)视觉化的数据科学家简历,细节模糊。请注意,两个示例中使用的垂直拆分是用来区分经验,技能,成就和出版物的。在这两种情况下,简短的摘要段落都有助于描述他们的背景和愿望。经所有者许可后使用。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402235431957.png#pic_center =450x)
5.机器学习的多样性
我寻找两种类型的品种:
算法类型-结构化/经典 ML 与深度学习。一些候选人仅与深度学习合作,包括可能更适合基于树的模型的结构化数据。虽然成为 DL 专家本身没有任何问题,但限制工具集可能会限制您的解决方案。正如马斯洛所说:“如果您仅有的工具是锤子,那么您往往会把所有问题都看作钉子。” 在Riskified中,我们处理结构化,领域驱动,功能工程化的数据,最好用各种形式的增强树来处理。有人的整个简历都指向 DL,这是一个问题。
ML 领域-这通常与需要大量专业知识的两个领域相关-计算机视觉和 NLP。这些领域的专家需求旺盛,在许多情况下,他们的整个职业都将专注于这些领域。虽然这对于要寻找某人从事该领域的工作至关重要,但通常不适合某人担任更一般的数据科学职位。因此,如果您的大部分经验是在 NLP 上,并且您正在申请域外的职位,请尝试强调职位/项目,因为您正在处理结构化数据以证明多样性。
6.技术栈
通常可以将其分解为语言,特定的程序包(scikit 学习,pandas,dplyr 等),云及其服务(AWS,Azure,GCP)或其他工具。一些候选人将其与他们熟悉的算法或体系结构(RNN,XGBoost,K-NN)混合在一起。就个人而言,我更喜欢围绕技术和工具展开的工作。当提到特定算法时,我想知道候选人的理论 ML 知识是否仅限于那些特定算法。
在这里,我正在寻找技术堆栈的相关性-它们是否来自最近几年(这是应聘者亲身实践并学习新技能的积极信号),堆栈的广度(它们是否仅限于特定领域?工具,或者他们熟悉很多东西)以及与我们的堆栈相适应(我们需要教多少)。
7.项目
您有可以在 GitHub 上共享的东西吗?任何 Kaggle 竞赛或附带项目都可能会非常有帮助,使您可以查看简洁的代码,预处理的类型,功能工程,EDA,算法的选择以及现实项目中需要解决的无数其他问题。将链接添加到您的 GitHub 和 Kaggle 帐户,以供访问员深入研究您的代码。如果您没有太多经验,很有可能会询问您有关这些项目中的一个或多个的信息。在我进行的一些采访中,候选人对这个项目不太记得,我们也无法就他们所做的选择及其背后的原因展开对话。确保重新完成所做的工作或将其排除在简历之外。同样,请确保您展示了自己的最佳作品,并且已经投入了足够的时间和精力。最好有 2–3 个高质量项目,而不是 8–10 个中等(或更低)质量的项目。
概括
如果您正在寻找新的数据科学职位,请花一些时间并仔细阅读本文中的要点。如果您无法勾选所有这些标记,那就很好,但是越多越好。希望这些技巧将帮助您从人群中脱颖而出,并以鲜艳的色彩通过 CV 屏幕。
#pic_center =450x
参考
https://towardsdatascience.com/7-must-haves-in-your-data-science-cv-9316841aeb78
3. Tips: 学习至少一个技术技巧
笔者的文章:
我不害怕曾經練過一萬種踢法的人,但我害怕一種踢法練過一萬次的人(by 叶师傅的徒弟 Bruce Lee)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401234308615.png#pic_center =500x)
树的遍历(Traversal)
如下图, 三种遍历方式, 可用同一种递归思想实现![在这里插入图片描述](https://img-blog.csdnimg.cn/202104012343262.png#pic_center =500x)
1. 144. 先序遍历(PreOrder, 按照先访问根节点的顺序)
解法
2. 94 中序遍历(InOrder, 按照根节点在中间访问的顺序)
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
解法
3. 145 后续遍历(PosterOrder, 按照根节点在后面访问的顺序)
解法
4. 100. 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。![在这里插入图片描述](https://img-blog.csdnimg.cn/2021040217044554.png#pic_center =500x)
解法
5. 226 翻转二叉树
翻转一棵二叉树。
备注:这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们 90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402171549153.png#pic_center =500x)
6. 590. N 叉树的后序遍历
给定一个 N 叉树,返回其节点值的 后序遍历 。
N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。
进阶:
递归法很简单,你可以使用迭代法完成此题吗?
示例 1:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402172655789.png#pic_center =400x)
解法
7. 103. 二叉树的锯齿形层序遍历
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
解法:
8. 230. 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
中序遍历
9. 102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
递归 + 前序遍历的解法,记录每一层的高度值。
10. 199. 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
基本思路: 先序遍历, 记录每一层深度下的节点的值, 并先记录左节点再记录右节点, 则最后记录的值即为该层深度的右视图看到的值
11. 104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
返回它的最大深度 3 。
12. 107. 二叉树的层序遍历 II
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:给定二叉树 [3,9,20,null,null,15,7],
返回其自底向上的层序遍历为:
参考
4. Share: 分享一篇有观点和思考的技术文章笔者的文章:
讲师:邱岳
1. 用户属性
1.1 用户是谁
通用:年龄、性别、地区、终端、分辨率、网络条件......
业务:社交、来源、职业、家庭关系、学历、ID.....
来自数据工具/用户调研/业务数据表
快速辅助决策
应指向用户画像
形成对用户好恶的感性直觉理解
1.2 用户从哪里来,到哪里去
互联网产品分析中最重要的分析领域;
宏观分析和局部观察两种
数据获取:用户行为日志
常用工具:漏斗/地图
思路:从微观轨迹到宏观数据
从用户的角度看产品,标记在每一时刻可能做什么,去哪里
核心路径是什么?路径的核心环节是什么?
2 App Store 页面体验
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324220037321.png#pic_center =300x)
页面:☞ Portal: 今日推荐、游戏、App、搜索☞ List:应用列表☞ Detail:专文推荐、应用详情
动作 分享、获取(点击获取 > 确认)、退出
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324215146179.png#pic_center =600x)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324215212114.png#pic_center =500x)来源 --> 着陆位置 --> 行为轨迹 --> 关键行为 --> 出口 --> 引荐 | 留存
2.1 用户分类与用户标签
用户是谁 x 用户做了什么 --> 用户标签
新用户 & 老用户
高频用户 & 低频用户
浏览用户 & 下载用户
免费用户 * 付费用户
新购用户 & 复购用户
无支付路径用户 & 支付宝用户 & 银行卡用户
生产力工具用户 & 游戏用户 & 创造力工具用户
生产用户 & 消费用户
L1, L2, L3, L4
2.2 用户产品的数据模型
假设一个关键目标:提高 App 下载量
以终为始,倒推实现路径![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324215937532.png#pic_center =600x)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324220458333.png#pic_center =600x)
2.3 基于数据反推的策略
针对 App Store 新用户提供搜索引导☞ 目标:提高新用户进入搜索页 -- 输入搜索词 -- 提交搜索 -- 浏览并点击搜索结果的比例
针对低频用户发送 Push,直接导入搜索结果页☞ 目标:提高低频用户进入搜索页 -- 浏览并点击 -- 自行输入搜索词的比例
针对免费用户,优先展示免费 App 的搜索结果页☞ 目标:提高免费用户的搜索列表至应用详情的转化率
还有很多,当我们将框架搭建好后,数据填充其间,就可以集中考虑策略了。
3 作业
挑选一个你喜欢的产品(结构简单一点),做一个用户路径地图
针对这个路径地图,做一个漏斗模型,填入你认为合理的数字
(选做)根据这个你假设的数字,提出下一步的优化重点
(选做)针对优化重点,提出一到两个改进方案。
版权声明: 本文为 InfoQ 作者【John(易筋)】的原创文章。
原文链接:【http://xie.infoq.cn/article/02d8d379c3df2e20af6135c7d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论