アルゴリズムの書面によるインタビューの好きな研究を学ぶ方法:5分でプログラムを学びます

元の文

著者:黄斜め

復刻版は、資料の冒頭にソースと作者を明記してください。

この記事マインドマッピング

ここに画像を挿入説明

アルゴリズムとは何ですか

データ構造自体は単にキャリア、およびデータであるため、私たちは実際に、データ構造とアルゴリズムが密接に関連して、このコースのデータを構造化する方法を学ぶ、プログラマーとして新人についての記事があったが、なぜあなたがそう言うん最後の時間物事には、構造上の効果を有し、出力値は、実際のアルゴリズムです。

例えば、データ構造、一見非常に単純なデータ構造のアレイは、このようなように、文字列、バイナリツリーアルゴリズム、およびこのようなDFSとBFS、別のアルゴリズムのような動的プログラミングのような多くの複雑なアルゴリズムをサポートすることができます。そして、最後に、アルゴリズムは、それが何であるか、私たちは公式のプレゼンテーションを見てみましょう。

百度百科紹介によれば、アルゴリズム(アルゴリズム)は、正確な問題解決ソリューションと完全な説明を参照し、問題を解決するための明確な一連の命令であり、このアルゴリズムは、体系的な方法で説明した問題を解決するためのポリシーメカニズムを表します。すなわち、特定の仕様では、限られた時間内に必要な出力を得るために入力することができます。アルゴリズムの長所と短所は、測定の空間計算量と時間の複雑さを使用することができます。

実際には、アルゴリズムの本質は、ヘルプの人々へのアルゴリズムは別の問題に問題を入れて、抽象的な問題コンクリートに問題の多くを解決するため、操作後にあなたの出力のセットを与えるために、あなたの入力のセットを与えることです。

アルゴリズムのN段を認識する

I最初に遭遇した問題は、私はタイトルを見た時は、実際には2つのリストをマージするような配列内の2つの要素の代替として非常に基本的な質問、であることをアルゴリズムやデータ構造、アルゴリズムの私の研究セクションのレビューで一つに、私にとって、それは私も擬似コードはまだ何も知らないされなかった場合、すでに非常に困難なことです。

常にアルゴリズムの知識に関するいくつかの研究があるインタビューでは、それよりもこれらのアルゴリズムの質問には、いくつかのために、より困難であると独自のデータ構造を学ぶ前にしたときに、第2の理解のアルゴリズム、または大学院生の間、インターンシップを見つけ、あなたが説明するようにしましょう速い放電プロセス、またはバイナリ検索処理、それはほとんどが電話インタビューであるので、一般的にあまり複雑調べません。

第三次认识算法,是在面试了头条这类对算法要求极高的公司之后。当时我对这类公司的算法面试难度还没有足够的认识,几乎没有准备什么算法题就去参加面试了,头条不像其他公司,绝不是问一些类似快排这样的简单算法题敷衍了事,而是会直接掏出一道BFS或者DFS让你做一做,而且经常不止是一道题。我只记得当时面试的时候,看了题目半个小时啥都没写出来,非常尴尬。

第四次认识算法,是在参加了一些公司的笔试之后。和笔试算法题相比,面试算法题简直是小巫见大巫,好歹面试题考察的还是一些经典的算法,可能刷一刷剑指offer和LeetCode的简单或者中等题就能搞定了,但是笔试题就不一定的,出题人的思路千奇百怪,很多时候解法也很古怪。整体来看,通常笔试算法题的难度是最高的,特别是像字节跳动这种对算法有变态要求的公司,基本上算法题一道都写不上来。

算法学习之路

虽然我学习算法的道路一直不太顺利,但是想要进BAT大厂,算法不过关肯定是不行的。因此,我对于上面每个阶段的问题,都制定了一些对应的学习方案,让我应对每个阶段的算法问题。

数据结构与算法

数据结构这门课,其实很多时候就是我们的算法启蒙课,当初我是在考研的时候复习的,用的教材是《天勤数据结构》但是对于不考研的同学来说,我觉得还有很多不错的书可以参考,比如《大话数据结构》学好数据结构是学好算法的基础,至于怎么学习数据结构,比如回去看看咱们的上一篇文章,你就可以得知一二了。

直接上剑指offer

有了数据结构的基础打底之后,至少你在看算法题的答案时,也能大概看懂了。但是,数据结构里的那些算法,很多时候是不够用的。当你了解到《剑指offer》里这本书的算法是笔试面试经常要考的内容,再去看看这本书里题目的难度,你就会发现事情并不简单。

对于只有一点数据结构算法知识的同学来说,直接上剑指offer是有难度的,毕竟很多题目的解法你之前见都没见过,有的题目你看了答案也会很快忘记。

其实,这本书里大部分的题目都不会用到什么特别复杂的算法,但是很多题型你可能确实是第一次见过,刷题这件事情没有捷径。这个时候你能做的就是多做题做看几遍书,真正做到能把题目自己写一遍,才能算是掌握了这本书里的算法。

笔试题级别的算法怎么学

既然已经看完了剑指offer,是不是可以直接开始学习笔试题级别的算法了。
且慢,我给你看一样宝贝。其实,剑指offer的那些算法,大部分都还是在数据结构算法的范畴之内,而在如今的笔试面试题库里,还有很多的经典算法,这些算法题就要到LeetCode里才能施展拳脚了。

比如动态规划,深度优先、广度优先、回溯算法等等,这类算法题光靠自己想是想不出来的,因为这些题目的背后都是一些经典的算法和解题思路,你之前没见过的话,想破头也不可能想的出来。

而这些算法,我之前也一直没找到合适的学习方式,总是东一榔头,西一棒子,看一些碎片化的文章来学习。直到后来我看到了基本还不错的算法书,比如《图解算法》以及《啊哈算法》把一些比较有难度的经典算法都做了介绍和讲解,当然了,现在还有很多的算法爱好者会做一些这类算法的分享,比如五分钟学算法的算法动画,程序员小灰的漫画算法,都是比较出色的例子。

搞定LeetCode和真题

最后一步,可能也是最关键的一步,就是要进入算法题库的最高殿堂,LeetCode了,这个刷题网站想必很多同学都听说过,特别是有志于进入互联网大公司的同学,这个是必知必会的。

LeetCode的题库有非常多的题目,但我其实也只刷了150道题而已,当初我跟着一篇LeetCode刷题指南完成了刷题,详见:,当时我把很多常考类型的题目都刷了一遍。其实,LeetCode的题目一般刷2-3遍是比较靠谱的,看到原题的时候要保证自己能做对。

これらのトピックは、一般的にネットオフ牛に収入になり、この時間は、我々はこのブラシを磨くべき私は年がZhentiにそれを書かれて、そして今、インターネット企業の多くは、オンラインオフ牛でのインタビューを書い以上としましょう、そのためZhenti試験話題のクラス、あなたは再び研究管理のベストブラシを興味を持っている会社のための特別な軽蔑は、すべての後、非常に頻繁に話題と人々も、変更、または元のタイトルのダイレクトコピーを作成する前に、怠惰なトピックを取得します。

また、これらのインターネット企業は、より多くの、あなたがそのような練習の法則、数学と同じの目的を理解することができない、それは戦闘中に穏やかに残ることができるようにより多くの訓練を行う必要があり、一般的にアウトアルゴリズムZhentiの非常に特殊です。

推奨リソース

学習リソースクラスのアルゴリズムは非常にあると言うことができる、私はちょうど私はかなり良い感じのいくつかのリソースをお勧めしますが、内容はそれほどではありません、あなたは時間の十分に長い期間を参照してください。

リソースデータ構造、アルゴリズムの主要な側面は、学習リソースをお勧めしますこの記事を参照することができます。

図書

「アルゴリズム図」
「なるほどアルゴリズムは、」
「のオファーを勝ち取る」
「アルゴリズム入門」カバーであってもインスタントラーメンは少し重いお勧めできません

ビデオ

「LeetCodeブラシクラスのタイトル」
「ストレートバットアルゴリズムブラシタイトルクラス」
小さなカメ、いくつかの古典的なアルゴリズムのコース

他の

アルゴリズムアニメーションアルゴリズムの学習5分
プログラマ小さな灰色の漫画アルゴリズム
LeetCodeまたはLintCodeを

概要

ここで最初のピットストップで、今日、アルゴリズムについて学びます。実際には、我々はあなたがすぐに学ぶために何を理解するために、実用的かつ効率的に注意を払う、より指向筆記試験と面接を学ぶためのアルゴリズムを議論し、どのような種類学ぶためのステップのに応じました。

全体的に、最初のデータ構造を学び、演習を強化することは、安全性の提供を証明した後、いくつかのアルゴリズムの本が、統合し、古典アルゴリズムの理解、そして最後にLeetCode真の問題を始める、能力アルゴリズムを強化するために、問題を解決するために、自分の能力を訓練し続けるに行きます試験に月または数ヶ月は、この状況と問題解決の感触を維持するために、あなたは、実際の戦闘でより良い再生されます。

おすすめ

転載: blog.51cto.com/14006572/2472631