书栈网 · BookStack 本次搜索耗时 0.031 秒,为您找到 71 个相关结果.
  • 二分查找高效判定子序列

    二分查找高效判定子序列 一、问题分析 二、二分思路 三、再谈二分查找 四、代码实现 二分查找高效判定子序列 二分查找本身不难理解,难在巧妙地运用二分查找技巧。对于一个问题,你可能都很难想到它跟二分查找有关,比如前文 最长递增子序列 就借助一个纸牌游戏衍生出二分查找解法。 今天再讲一道巧用二分查找的算法问题:如何判定字符串 s 是否是字符...
  • 烧饼排序

    烧饼排序 一、思路分析 二、代码实现 烧饼排序 烧饼排序是个很有意思的实际问题:假设盘子上有 n 块面积大小不一 的烧饼,你如何用一把锅铲进行若干次翻转,让这些烧饼的大小有序(小的在上,大的在下)? 设想一下用锅铲翻转一堆烧饼的情景,其实是有一点限制的,我们每次只能将最上面的若干块饼子翻转: 我们的问题是,如何使用算法得到一个翻转序...
  • 特殊数据结构:单调队列

    特殊数据结构:单调队列 一、搭建解题框架 二、实现单调队列数据结构 特殊数据结构:单调队列 前文讲了一种特殊的数据结构「单调栈」monotonic stack,解决了一类问题「Next Greater Number」,本文写一个类似的数据结构「单调队列」。 也许这种数据结构的名字你没听过,其实没啥难的,就是一个「队列」,只是使用了一点巧妙的方法...
  • 队列实现栈|栈实现队列

    队列实现栈|栈实现队列 一、用栈实现队列 二、用队列实现栈 队列实现栈|栈实现队列 队列是一种先进先出的数据结构,栈是一种先进后出的数据结构,形象一点就是这样: 这两种数据结构底层其实都是数组或者链表实现的,只是 API 限定了它们的特性,那么今天就来看看如何使用「栈」的特性来实现一个「队列」,如何用「队列」实现一个「栈」。 一、用栈...
  • 如何判断回文链表

    一、判断回文单链表 二、优化空间复杂度 三、最后总结 我们之前有两篇文章写了回文串和回文序列相关的问题。 寻找 回文串的核心思想是从中心向两端扩展: string palindrome ( string & s , int l , int r ) { // 防止索引越界 while ( l >=...
  • 贪心算法之区间调度问题

    贪心算法之区间调度问题 一、问题概述 二、贪心解法 三、应用举例 贪心算法之区间调度问题 什么是贪心算法呢?贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法需要满足更多的条件(贪心选择性质),但是效率比动态规划要高。 比如说一个算法问题使用暴力解法需要指数级时间,如果能使用动态规划消除重叠子问题,就可以降到多项式级别的时间...
  • 最长公共子序列

    最长公共子序列 一、动态规划思路 二、疑难解答 三、总结 最长公共子序列 最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路,比如说编辑距离。而且,这个算法稍加改造就可以用于解决其他问题,所以说 LCS 算...
  • 如何高效解决接雨水问题

    接雨水问题详解 一、核心思路 二、备忘录优化 三、双指针解法 接雨水问题详解 接雨水这道题目挺有意思,在面试题中出现频率还挺高的,本文就来步步优化,讲解一下这道题。 先看一下题目: 就是用一个数组表示一个条形图,问你这个条形图最多能接多少水。 int trap ( int [] height ); 下面就来由浅入深介绍暴力...
  • 关于 Linux shell 你必须知道的

    一、标准输入和参数的区别 二、后台运行程序 三、单引号和双引号的区别 四、sudo 找不到命令 我个人很喜欢使用 Linux 系统,虽然说 Windows 的图形化界面做的确实比 Linux 好,但是对脚本的支持太差了。一开始有点不习惯命令行操作,但是熟悉了之后反而发现移动鼠标点点点才是浪费时间的罪魁祸首。。。 那么对于 Linux 命令行,本文...
  • 前言

    前言 使用方法 目录 感谢如下大佬参与翻译 Donate English version repo and Gitbook is on english branch . Just enjoy:) 前言 本仓库总共 60 多篇原创文章,基本上都是基于 LeetCode 的题目,涵盖了所有题型和技巧,而且一定要做到举一反三,通俗易懂 ,绝不是简...