lucifer

技术面试原来不止考技术?

  |  

大家好呀,狗头又出现啦~

我在 21 年的时候无相关背景转码上岸狗家,并且接到了一些中小厂的 offer。在我准备面试和面试的过程中,我总结了一些非技术相关的技巧和心得。这些技巧和心得在技术面试中往往能起到锦上添花的作用。这篇文章讨论的所有技巧都跟代码能力和工程能力无关~

背景

给一个两个数组,其中一个数组是 A [1,2,3,4],另外一个数组是 B [5,6,7,8]。让你求两个数组合并后的大数组的:

  • 最大值
  • 最小值
  • 总和

这题是不是很简单?我们直接可以很轻松地在 $O(m+n)$ 的时间解决,其中 m 和 n 分别为数组 A 和 B 的大小。

那如果我可以修改 A 和 B 的某些值,并且我要求很多次最大值,最小值和总和呢?

朴素的思路是原地修改数组,然后 $O(m+n)$ 的时间重新计算。显然这并没有利用之前计算好的结果,效率是不高的。 那有没有效率更高的做法?

有!线段树就可以解决。

经过了半年时间打磨,投入诸多人力,这本 LeetCode 题解书终于要和大家见面了。
💐💐💐💐💐。

实体版购书链接:https://union-click.jd.com/jdc?e=&p=JF8BANYJK1olXQcDUV9VDUMeBF8IGloXVAIGU1pdCUIVCl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksWAm0BH18SWQYDXVxUFxJSXzI4UixRNl1GVjc-ci1CQA5RUl5sHVhZAlJROEonA24JG1MQWgMEUW5tCEwnQgEMGV4WVTYDZF5aCkMWA2kBH1sUVQ8yU15UOBBCbWgIHghBDgVQAw4JXx4nM18LK2slXTYBZBwzDUIWBWpdSVNFVFJQUQ1fDkMWAToKG1xCX1QEB1sJW0wnAW4JH1Il

电子版购书链接:https://union-click.jd.com/jdc?e=&p=JF8BAL0JK1olXDYAVVhfD04UAl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFkkWBW0PHlgUQl9HCANtcS0SdTFvWVt1X3BkVV4Kc0JxYRtPe1cZbQcyVF9cCEMSBGoOHmslXQEyHzBcOEonA2gKE1oVWwEKXV5cAXsQA2Y4QA57WgYHBwoOCxlAUztfTmslbQUyZG5dOEgnQQFaSQ5FWQYFB1cODhgSVDpaS1hFDwQLUlwJAU5DAWcJHWsXXAcGXW4

在线试读

图论〔Graph Theory〕是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。

 如下就是一种逻辑上的图结构:

逻辑上的图结构

图是一种最复杂的数据结构,前面讲的数据结构都可以看成是图的特例。那为什么不都用图就好了,还要分那么多种数据结构呢?

这是因为很多时候不需要用到那么复杂的功能,图的很多特性都不具备,如果笼统地都称为图那么非常不利于沟通。你想你和别人沟通总不至于说这道题是考察一种特殊的图,这种图。。。。 这未免太啰嗦了,因此给其他图的特殊的图起了特殊的名字,这样就方便沟通了。直到遇到了非常复杂的情况,我们才会用到 ”真正“的图

前面章节提到了数据结构就是为了算法服务的,数据结构就是存储数据用的,目的是为了更高效。 那么什么时候需要用图来存储数据,在这种情况图高效在哪里呢?答案很简单,那就是如果你用其他简单的数据结构无法很好地进行存储,就应该使用图了。 比如我们需要存储一种双向的朋友关系,并且这种朋友关系是多对多的,那就一定要用到图,因为其他数据结构无法模拟。



博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 。
载入天数...载入时分秒...