leetcode
笨鸟先飞飞飞
这个作者很懒,什么都没留下…
展开
-
leetcode 排列组合系列
排列组合是回溯算法的经典问题,有固定的模板写法,包括重复元素以及非重复元素。下面总结一下leetcode中的排列组合问题。排列排列问题一般是对原数组进行交换,然后维护一个全局变量的结果集合,每当符合要求将当前状态下的原数组加入到结果集合之中。题目: 46 全排列 vector<vector<int>> res; vector<vector<int>> permute(vector<int>& nums) {原创 2020-08-21 16:27:11 · 1649 阅读 · 0 评论 -
leetcode 二叉搜索树序列(hard)全局变量问题
题目 :面试题0409 二叉搜索树序列题目分析:根节点可以确定数组首个元素,然后递归求解左子树,右子树,确定由这两个子树确定的数组。需要注意的是, 不是两个数组整体组合,而是数组内的元素互相组合(第一次就错了),得到所有的组合,然后添加到结果中。 set<vector<int>> res; void backTrace(vector<int> &vc, vector<int> & left, vector<int原创 2020-08-18 15:21:26 · 291 阅读 · 0 评论 -
leetcode 二叉搜索树专题
二叉搜索树相比于一般的二叉树,拥有性质:根节点的数值大于左子树所有节点的数值,小于右子树所有节点的数值因此如果使用中序遍历二叉搜索树,得到的就是一个升序序列。遇见二叉搜索树的问题,一般从两个角度考虑,一: 利用 树+ 二叉搜索树的性质二: 利用中序遍历 + 二叉搜索树的性质题目:leetcode 96 不同的二叉搜索树题目分析: 二叉搜索树性质: 中序是递增序列,子树同样满足这个性质。从1到n中选择根节点考虑, 只能由根节点左侧的元素组成左子树,根节点右侧的元素组成右子树。递归+原创 2020-08-18 15:09:19 · 162 阅读 · 0 评论 -
单调栈
定义栈内元素按照递增或者递减的顺序排列的栈适用问题单调栈分为单调递增与单调递减栈,可以用于获取下一个比当前元素大(小)的元素。当需要通过比较前后元素的大小关系时,可以使用单调栈解决问题。单调递减栈在队列中针对每个元素从右边寻找第一个比它大的元素在队列中针对每个元素从左边寻找第一个比它大的元素(从后往前)这两种解决问题过程一样,但是角度不同。使用下面这个例子来解释:有一本武功秘籍,根据先来后到的顺序教授人武功。但是在排队过程中,如果有武功更加高强的人发现前面的人武功不如自己,就会打原创 2020-07-05 10:24:41 · 279 阅读 · 0 评论 -
滑动窗口
最小窗口子序列-DP解法滑动窗口是一种双指针技巧的算法框架, 其算法时间复杂度较低。下面是leetcode中常见的几道可以使用滑动窗口解决的题目。一、最小覆盖字串题目链接:https://leetcode-cn.com/problems/minimum-window-substring/题目要求在S(source) 中找到包含T(target)中全部字母的一个字串,顺序无所谓,要求这个字串的最短长度。暴力解法,代码大概如下:for(int i=0;i<s.size();i++) ..原创 2020-06-24 17:43:49 · 230 阅读 · 0 评论 -
优先队列、sort排序方式
优先队列、sort排序方式对优先队列还有sort的排序一直很容易弄混,忍不下去了,记录下来。sort排序方式sort函数介绍template <class RandomAccessIterator, class Compare>void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);sort函数可以排序任意类型的元素,比如浮点数,整数,字符串等等,还包括我们自己定义的结构体。其效原创 2020-06-11 19:21:42 · 1568 阅读 · 0 评论 -
快排C++
c++快排快排原理原理步骤:快排思想的本质可以分为如下三个步骤:1. 选择:从数列中选择一个元素作为基准base(通常取第一个数 也可以随机取)2. 分区: 将数列中比base大的元素放在其一边,比base小的元素放在另外一边3. 重复:对左右两边的区间重复上述两个步骤,直到区间只包含一个元素说人话:假设现在对"6 1 2 7 9 3 4 5 10 8"这十个元素进行排序。1. 首先选择开头元素6作为base,然后根据base对十个元素进行分区。2. 分区过程如下:定义原创 2020-06-11 12:05:14 · 1122 阅读 · 0 评论 -
力扣“兔系”刷子
做一把力扣兔系刷子龟与兔计划细节部分一些工具:龟与兔刷leetcode可以分为两种派系,分别是龟与兔。龟们通常将刷leetcode作为一种习惯,每天起床之后来一发。龟们更注重的是题目做干净。题目做多之后就会发现其实也就那么多套路,但是即便是明确了算法,能不能准确实现,做到bug free, 能不能继续优化,数据结构是否合理同样也是很考验人的问题。因此龟系常常不满足于简单的accept,而是追求...原创 2020-03-18 17:16:18 · 487 阅读 · 0 评论