红黑树csdn_顺序查找算法

红黑树csdn_顺序查找算法在校生为了面试,有必要强行记住一些复杂算法如红黑树、KMP等的实现吗?最近在尝试练习手写基本算法,写到红黑树感觉写不下去了orz…所以想知道,有没有必要花费大量精力强行记忆一些所谓十五大经典算法中

在校生为了面试,有必要强行记住一些复杂算法如红黑树、KMP等的实现吗?   最近在尝试练习手写基本算法,写到红黑树感觉写不下去了orz…所以想知道,有没有必要花费大量精力强行记忆一些所谓十五大经典算法中很复杂的那些算法的实现呢?我觉得我问的不好,导致大家普遍在回答应付不是一个好行为,应该了解其原理blablabla。我的想法是这样的,对于没工作的人来说,通过考试(找到工作)是最紧迫的事情了,我觉得这就像高考一样,应考和押题的实用主义更适合智商一般水平一般的人,而现在我疑惑的是我押的方向对不对,而不是应不应该押。说的再直白一点,押题要押重点,我不太清楚这些算法算不算面试中的押题重点,如果不是,那么重点是哪些。我想得到这方面的指导,谢谢!   最近hiring freeze的风潮相信大家都有所感受或者至少是有所耳闻。微软算是最近一段时间hiring freeze程度最低的公司之一了,而且最近释放出了不少岗位,大家可以到Microsoft Career网站上瞧一瞧投一投。以下是该学员第一视角的战报:   我是在美国TOP30学校读的本科,数学专业,上过一些data modeling和一些比较入门的machine learning的课程。起初我也是个学渣,成绩基本在中下水平,而且学到的CS知识也没有很深奥,后来在Justin老师的帮助下拿到了微软的offer,想分享下我的经历。搞AI的老贾:北美求职Timeline以及保offer项目介绍搞AI的老贾:关于算法突击班与算法面试的常见问题
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   我在大学前两年真的是个很弱很弱的学渣,虽然自我感觉还蛮努力的。为了蜕变我刷过很多题,但是始终没找到诀窍,每次做题就好像看到新题一样,真的欲哭无泪。直到偶然看到朋友推荐了Justin导师的微软内部群,当时抱着也许能蹲到好东西的想法进了群,没想到从此改变了我的学渣之路。大家也可以加入我们的讨论群,群里有很多求职向的干货。进群可以加:MSFTJustin
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   在群里蹲了一段时间我发现Justin老师分享的内容真的干货很多,而且还是个业界的大佬,很多自己瞎琢磨好几周的问题他一句话就给道破了,我觉得一个好老师的意义在于可以给学生指明正确的方向,真的会节省很多时间。于是就报名了保offer课程。保offer这个课程相当于一个求职全家桶,就是从ML的知识学习,到算法题,到模拟面试还有内部渠道的内推都是包括的。我不仅跟着学习了算法的七句心决,还开始跟着他做了一个微软的内部项目,拿到了证书。大家也可以加入我们的讨论群,群里有很多求职向的干货。进群可以加:MSFTJustin
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   秋招的时候我投了微软,在Justin老师的指点下,我特意详细写了一下之前做的“计算机视觉在搜索引擎方向”的项目经历,再加上上过简历课,我的简历做的还是很不错的。有必要说一下,好的简历是进大厂的敲门砖,用心学一下怎么做一份好的简历真的很重要。   很快就收到了面试通知。首先是hr面,他让我做了自我介绍,然后问了我想来微软的原因,我就实事求是地告诉了他。这一面我觉得重要的是整理好你的心态以及表达能力,他不会问你专业的问题的。   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   一面是一个白人,他穿着休闲,态度很和蔼。一上来也不着急开始,反而问我压力大不大。我们聊了一会最近的情况,慢慢我就不是很紧张了。他还和我打趣说我是面试里穿着最正式的。我先做了自我介绍,然后他问我,如果和同事产生纠纷应该怎么解决?果然考到了类似的题目,我赶紧整理了思路,回答了以前听过的方法:首先需要明白问题的分歧点,然后双方都阐述自己的观点,可以参考同组其他人的意见,然后根据大家的经验来尝试说服自己或者同事。面试官给予了我口头肯定。   接着开始面代码,题目如下:   题目   解析   这题要求把链表后面k个节点轮转到链表前面。对于这题我们首先需要遍历链表,得到链表长度n,因为k可能大于n,所以我们需要取余处理,然后将链表串起来形成一个换,在遍历n – k % n个节点,断开,就成了。譬如上面这个例子,k等于2,我们遍历到链表结尾之后,连接1,然后遍历 5 – 2 % 5个字节,断开环,下一个节点就是新的链表头了。   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   代码如下:   题目不是很难,但是需要掌握Linked List的细节,而且还需要掌握好反转的时候的头和尾,而且还需要考虑k大于n的情况。不过还好之前课上我做过非常多的类似的题目,所以完成的算是不错。面试官也通过了。   二面是一个印度人,看起来有一点严肃,我到的时候他已经很端正地坐在桌子前了。我们只是礼貌地寒暄了几句就开始了面试。首先我做了自我介绍,并讲了讲自己的项目。他果然开始深挖我的项目,让我讲我在项目里应用到SQL的经历。我想到之前Justin老师跟我说这种时候不用具体描述SQL的操作,面试官更想听到的可能是个完整的故事。于是我从project scope、action、results三步进行了回答。听完我的回答,面试官点了点头冲我微笑,应该是挺满意的。   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   然后就是代码题了,题目如下:   题目   解析   题目翻译: 给出一个整数,判断它是否是2的幂。题目分析: 2的整数次幂对应的二进制数只含有0个或者1个1,所以我们要做的就是判断输入的数的二进制表达形式里是否符合这一条件。有一种corner case需要注意,当输入的数为负数的时候,一定不是2的幂。时间复杂度:O(n) 空间复杂度:O(1)   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   代码如下:   这道题目看起来没有什么合适的解法,后来我突然想到了之前学过的二进制做法。当时课上老师教给我们的时候我还被惊讶过呢。现在没想到竟然碰到了,而且我做出来解法非常简单。我们之后讨论了一下时间复杂度和空间复杂度,面试官就放过我了。   大概一周吧,我接到了三面通知,因为不想再出现让面试官等我的情况,这次我特意早到了几分钟。三面是一个亚裔,他个子很高,还有一些帅气,人也很热情。他进来之后先夸了夸我的准时,然后随便跟我聊了几句就开始面试了。我先做了自我介绍,他问了问我关于项目的一些基本问题,我对项目下了挺大功夫,所以对答如流。然后他开始问我关于SQL的概念题,让我说一说WHERE clause和HAVING clause的主要区别。这个我其实记得不是很全了,答之前思考了挺久,让自己尽量组织好语言,不能让他看出我的不熟练。我把能想起来的概念串成完整的句子讲了出来,然后对比的时候还代入了自己的项目。虽然可能不全面吧,但我觉得还是得自信一点。面试官也没有多说什么,就稍微点了点头。   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   接着开始面代码,题目如下:   题目   Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake.   Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straightforward.   Could you devise a constant space solution?   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   解析   这题需要修复一颗二叉搜索树的两个交换节点数据,我们知道对于一颗二叉搜索树来说,如果按照中序遍历,那么它输出的值是递增有序的,所以我们只需要按照中序遍历输出,在输出结果里面找到两个异常数据(比它后面输出结果大),交换这两个节点的数据就可以了。但是这题要求使用O(1)的空间,如果采用通常的中序遍历(递归或者栈)的方式,都需要O(N)的空间,所以这里我们用Morris Traversal的方式来进行树的中序遍历。Morris Traversal中序遍历的原理比较简单:   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   如果当前节点的左孩子为空,则输出当前节点并将其有孩子作为当前节点。   如果当前节点的左孩子不为空,在当前节点的左子树中找到当前节点在中序遍历下的前驱节点,也就是当前节点左子树的最右边的那个节点。   如果前驱节点的右孩子为空,则将它的右孩子设置为当前节点,当前节点更新为其左孩子。如果前驱节点的右孩子为当前节点,则将前驱节点的右孩子设为空,输出当前节点,当前节点更新为其右孩子。   
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法   重复上述过程,直到当前节点为空,递归的时候我们同时需要记录错误的节点。那么我们如何知道一个节点的数据是不是有问题呢?对于中序遍历来说,假设当前节点为cur,它的前驱节点为pre,如果cur的值小于pre的值,那么cur和pre里面的数据就是交换的了。   代码如下:   三面到了我最不擅长的Tree,但是我之前上课的时候学了很多相关的题目,而且也学到了许多的方法。所以我按照之前的思路给了答案,面试官问了我一下时间复杂度和空间复杂度就结束了。   一面、二面我对自己的表现还是挺满意的,但是三面我真的把握不大,虽然代码写得不错,但概念题答得有点马虎了,确实是没有掌握牢固那个。不过我一直是保持自信的状态,也把Justin老师交给我的一些答题思路、解题方法都用到了。真的是运气加成吧,一周后我收到了微软的offer,还挺惊喜的,一晚上没睡着觉。如果没有Justin老师,我现在可能还是大一大二那个拼命刷题却毫无长进的学渣,真的不得不说跟对导师、找对方法,才能正确解题、完成蜕变,面试对你来说才会变得没那么难,也才能离进大厂更近一步。   最后我有必要感叹一下在微软工作真的很幸福,上下班都不打卡,原则上也不提倡加班,鼓励员工在上班时间内完成工作。还有各种补贴补助,每逢节假日公司还会组织庆祝活动,跟我想象的拼命工作完全不一样,有评级制,但压力也不大,绝对是最人性化的大厂。不仅有有趣的团队,让你在轻松的环境收获充足的经验,还让你能拿到不错的薪水,美国应届生的平均工资大概是15w+。最后再说一句,大佬是真的很多,每天都能跟着他们学习到点新东西!趁着现在,赶紧开始努力,这种生活绝对不会再是可望而不可求的。   大家凭我的邀请码:KLDR44报名保offer项目可以享受九折优惠哦!搞AI的老贾:北美求职Timeline以及保offer项目介绍
红黑树csdn_顺序查找算法
红黑树csdn_顺序查找算法

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/22845.html

(0)
上一篇 2024年 9月 14日
下一篇 2024年 9月 14日

相关推荐

关注微信