内容列表

  • 2019-10-22 0 124
    算法总结-广度优先算法

    前面我们了解了深度优先算法,在遍历一棵树的时候会深入地遍历完树的一个分支后才会去遍历其它的分支。而广度优先算法则是从根节点开始一层一层的进行遍历,只有完全遍历完一层所有的节点后才会进入下一层的遍历。广度优先算法的一般套路如下: 创建一个队列并将根将节点插入到个队列中,此时根节点作为第一层,总共有一个节点。 在每层遍历开始前,队列的长度就是这一层的节点总数,我们记录下这个数目然后不断地将节点出队进行...

  • 2019-10-26 0 307
    为了进字节跳动,我精选了29道Java经典算法题,带详细讲解

    前言: 如题,很多粉丝私信,让分享一些算法面试题,今天他来了;精选29道Java经典算法面试题,并且做了详细的讲解,希望能够帮助到大家! Java经典算法题 1. Java 的 16 进制与字符串的相互转换函数 /** * 将指定 byte 数组以 16 进制的形式打印到控制台 * @param hint String * @param b byte[] * @return ...

  • 2019-09-20 0 202
    算法总结-归并排序

    归并排序是分治法的一种应用,其思路是将数组分为左右两部分,分别递归地进行归并排序,然后将这两部分给合并起来。归并排序的c++递归实现可以参考下面的模板: int mergeSort(iterator l, iterator r) { if (r - l <= 1) return; iterator m = l + (r - l) / 2; int count ...

  • 2019-09-03 0 220
    算法总结-深度优先算法

    深度优先算法多数是应用在树上,一个比较典型的应用就是二叉树的中序遍历。所谓树的前、中、后序遍历都是以树的根节点为准的,如下图所示的二叉树中序遍历的结果就是 4,2,5,1,6,3,7。下面我们来看一下 LeetCode 中的二叉树中序遍历的题目。 LeetCode94 题目链接: https://leetcode.com/problems/binary-tree-inorder-traversal...

  • 2019-09-10 0 211
    算法总结-回溯法

    回溯法是一种通过暴力穷举的方式解决问题的方式,是深度优先搜索的一种具体应用。其思路不难理解,想象一下你在走一个迷宫,当在一个路口有A, B, C 三条岔路的时候你要怎么办呢? 大家可以很容易地想到先尝试道路A, 如果走不通就回到这个路口尝试道路B,如果还走不通就尝试道路C,这就是一个典型地应用回溯法的例子。如果将目光着眼于整个迷宫,就可以发现这个迷宫其实就是一颗多叉树,每个路口就是一个节点,每个路...

  • 2019-09-01 0 135
    算法总结-二分查找法

    在LeetCode的题目讨论中,经常会有些大神将某一类的题目结题思路给整理了出来,感觉受益匪浅。受之启发,萌生了自己也总结一下常见算法的解题思路的想法,希望可以让自己在这个总结的过程中可也融汇贯通这些思路,同时可以给后来者以启发。 从哪里开始好呢?就从经典的二分查找法开始吧,这个算法几乎所有学过计算机的人都知道,而且我在之前的面试中不止一次碰到过这个算法以及这个算法的变种。 二分查找法的思路就是通...