• 中文
    • English
  • 注册
  • 查看作者
  • 百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    前言

    前段时间面试百度Java技术岗时碰到了一道算法题: 任意数分三组,使得每组的和尽量相等。 由于时间仓促,加之面试时头昏脑涨,这道题没做出来甚至没有给出思路,导致百度面试之旅失败。这让我多少有些遗憾和不甘。因为最近接触算法的东西较多而且本身对算法感兴趣,所以回家之后绞尽脑汁想把这题做出来。

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    说说我的思路:首先一定要先排序,这也是解决问题的关键。然后降序排序后的前三个数各分一组把剩余数往三个数上叠加。我最开始的思路也是如此,问题在于分组个数不确定,出现极端大的数怎么办,怎么叠加?那层窗户纸就是将剩余数中的最大值加到前三个数的最小值上,然后重排序,继续叠加,直到数组个数剩三个为止!(不知道大家能不能看懂)我事后解题思路大致就是这样,太苦逼了。

    还记得我当初校招的时候第一场面试也是倒在算法, 算法可以说是我们每个程序员的痛,明明平时工作的时候不会太多用到,但这个却是面试必问的点,也是我们进阶必须要面对的东西。 现在算法挺吃香的,但我们也不可能全身心的投入到算法的学习,这时候就需要一本好的参考书来协助我们学习。下面要与大家介绍的文档可以作为从事计算机研究与开发的技术人员的参考书,特别是 对正在准备面试、参加选拔性考试以及校园面试的读者尤为有用。

    字节内部算法文档

    第1章绪论

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第2章递归和回溯

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第3章链表

    第4章栈

    第5章队列

    第6章树

    第7章优先队列和堆

    第8章并查集ADT

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第9章图算法

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第10章排序

    第11章查找

    第12章选择算法(中位数)

    第13章符号表

    第14章散列

    第15章字符串算法

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第16章算法设计技术

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第17章贪婪算法

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第18章 分治算法

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第19章动态规划算法

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第20章复杂度类型

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    第21章杂谈

    百度面试被算法血虐,闭关肝完445页算法神仙笔记成功入职字节

    • 设计一个算法,按照螺旋顺序依次输出矩阵中的元素。

    • 设计一个洗牌算法。

    • 基于反转算法的数组旋转问题。设计一个函数rotate(A[],d,n),该函数将大小为n的数组旋转d个元素。例如,数组1,2,3,4,5,6,7在经过2个元素的旋转后变为3,4,5,6,7,1,2。

    • 已知数组s[1..n]和反转函数(s,i,j),反转函数颠倒à到j之间的数组元素(包括第i和j个元素)的顺序。以下序列的功能是什么?(1

    • 字符串由词和空格组成,设计一个程序将字符串中所有空格移到字符串的最前面,要求仅遍历数组一次,并且在原字符串中进行调整。

    • 能否降低问题5算法的复杂度?

    • 对于一个包含词和空格的字符串,设计一个程序将所有空格移到字符串的末尾,要求仅遍历数组一次,并且在原字符串中进行调整。

    • 移动0到末尾。给定由n个整数组成的数组,将数组中的0移动到末尾。例如,如果有数组{1,9,8,4,0,0,2,7,0,6,0},应该变为{1,9,8,4,2,7,6,0,0,0}。所有其他元素的顺序不变。

    • 能否降低问题8算法的复杂度?

    • 问题9的变型。已知一个包含正数和负数的数组,设计一个算法将正数和负数分开,要求正数和负数的相对顺序保持不变。输人:一5,3,2,一l,4,一8,输出:一5,—1,—8,3,4,2。

    这些问题你能答出多少?(手动狗头)反正我一时半会搞不定。不过没关系文档中也是有着每一题的解析,最后我们来看一看一位大佬对算法的一些看法。

    大佬的一些看法

    PS:我国软件学习形式主义太过严重,算法这种东西必须要与实践相结合才能真正起到作用,很多程序员算法非常厉害可是就是做不出东西,为啥,因为他们并不能能深刻理解算法,很多情况就是机械性套用算法,而且算法这种东西必须要与编程技术相结合,单一的算法几乎难以解决问题,比如云计算就属于算法,与互联网技术,多线程技术,多进程技术,和各种软硬件技术结合体,单一从一个层面去看算法几乎解决不了任何问题,国外的顶级软件大师则是将算法转化为计算机可以识别算法,并结合于其他计算机技术,使其达到最大效能,例如深度学习就和cuda相结合,使其最好的运转在某些硬件之上,再加之cuda具有极强并行运算能力,其效能达到最大化,其实算法与计算机技术具有极大跨度需要那种对数学或其他学科与计算机都较为精通的人才能正真转化,否则单—算法工程也仅仅只是书呆子的形式。难成大事。

    资料已整理成文档,需要获取的小伙伴可以+ VX: mxk6072

  • 0
  • 0
  • 0
  • 127
  • 请登录之后再进行评论

    登录
  • 任务
  • 实时动态
  • 发布
  • 单栏布局 侧栏位置: