Qoogle

如何成为一名优秀的软件工程师

小旭讲解 LeetCote 1293. Shortest Path in a Grid with Obstacles Elimination
小旭讲解 LeetCote 1293. Shortest Path in a Grid with Obstacles Elimination

给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。 如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。

递归
递归

递归是什么? 递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自... » 阅读全文

树状数组(Binary Indexed Tree)
树状数组(Binary Indexed Tree)

树状数组或二叉索引树(英语:Binary Indexed Tree),又以其发明者命名为Fenwick树。文章先介绍低位运算(lowbit)的基本知识,再提及如何将一个整数划分为Log n个区间的运算过程,进而延展到如何将线性序列以树行结构进行存取,最后介绍了高级数据结构——树状数组的两个基本操作——查询前缀和与单点增加。

后缀数组(Suffix Array)
后缀数组(Suffix Array)

本文介绍后缀数组的定义与构建的过程。首先,文章介绍什么是后缀数组,随后讲解了最自然的朴素算法。为了引出更高效的算法,文章首先提及倍增思想与基数排序的背景基础知识。接着,通过模拟演练的方式一步一步地演示如何创建后缀数组。将构建的抽象过程形象地展示出来,使读者更易理解。