76.最小覆盖子串

本文就解决一类最难掌握的双指针技巧:滑动窗口技巧。这个算法技巧的思路非常简单,就是维护一个窗口,不断滑动,然后更新答案。LeetCode上有起码10道运用滑动窗口算法的题目,难度都是中等和困难。该算法的大致逻辑如下:​intleft=0,r…

递归详解

首先说明一个问题,简单阐述一下递归,分治算法,动态规划,贪心算法这几个东西的区别和联系,心里有个印象就好。递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解…

反直觉概率

今天聊点轻松的内容:几个和概率相关的有趣问题。计算概率有下面两个最简单的原则:原则一、计算概率一定要有一个参照系,称作「样本空间」,即随机事件可能出现的所有结果。事件A发生的概率=A包含的样本点/样本空间的样本总数。原则二、计算概率一定要明…

常见的位操作

本文分两部分,第一部分列举几个有趣的位操作,第二部分讲解算法中常用的n&(n-1)操作,顺便把用到这个技巧的算法题列出来讲解一下。因为位操作很简单,所以假设读者已经了解与、或、异或这三种基本操作。一、几个有趣的位操作利用或操作|和空…

刷题指南

一、数据结构的存储方式数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储)。这句话怎么理解,不是还有散列表、栈、队列、堆、树、图等等各种数据结构吗?我们分析问题,一定要有递归的思想,自顶向下,从抽象到具体。你上来就列出这么多,那些…

KMP算法

KMP算法(Knuth-Morris-Pratt算法)是一个著名的字符串匹配算法,效率很高,也有点复杂。先在开头约定,本文用pat表示模式串,长度为M,txt表示文本串,长度为N。KMP算法是在txt中查找子串pat,如果存在,返回这个子串…

10.正则表达式匹配

10.正则表达式匹配https://leetcode-cn.com/problems/regular-expression-matching/10.正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’…