自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 leetcode 2020.04题目整理 (包括回文串、背包问题、BST插入删除、二维矩阵变换等)

三四月准备实习过程中遇见的一些原题,一部分是面试被问到的,一部分是看面经整理的,还有一些类似题目,从本地复制过来,备份一下(#.#)一些同类的题目之后会单独整理一下,重新做一遍,贴上代码。04.05:NO 3. 无重复字符的最长子串。 字符串的子串默认是连续的,子序列默认是不连续的。 双指针,枚举起点(外层for循环控制),移动终点(内层while循环控制)。map记录起点到终点间,每个字符...

2020-05-01 22:30:49 451

转载 并查集 并查集 并查集 详解(转)

转载记录一下。https://blog.csdn.net/liujian20150808/article/details/50848646

2020-05-01 21:42:55 155

转载 Dijkstra算法的原理以及实现等文章汇总

Dijkstra算法原理

2020-05-01 21:40:50 659

转载 转载 讲解优先队列priority_queue的一篇文章

优先队列的三种实现方式

2020-05-01 21:36:47 160

原创 leetcode 删除排序数组中的重复项(26、80)数组 双指针(快慢指针)

26 删除排序数组中的重复项题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。思路: 快慢指针。注意题目要求原地更改,且只是用O(1)的额外空间。具体思路见代码注释。class Solution {public: // 快慢指针 用快...

2020-02-13 12:25:06 132

原创 leetcode 丑数系列 丑数1/2 超级丑数 (263、264、313 质因数的应用 多指针动态规划)

263 丑数题目描述: 编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。思路: 此题较为简单,想要判断一个数的因子是否为2,3,5只需要判断对这个几个数进行取模然后再除以这几个数,直到最后为1即是丑数。如果对这个几个数取模都不能整除那一定不是丑数,所以使用else if,一直连续判断,如果除以2,3,5,都除不尽那就是丑数。class Solution {...

2020-02-12 22:17:19 165

原创 leetcode 大顶推 小顶堆 优先队列实现前K大/小 (347、692、451、973、373)

347 前K个高频元素题目描述: 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。思路: 用map统计每个元素出现的次数,map的数据格式相当于pair。建立小顶堆,保持优先队列的大小为k,当优先队列已经装满k个元素后,再向队列中push数据时,如果大于堆顶数据,则压入队列,并将最上面的数据pop出去(即pop出当前队列中最小的元素);如果小于,则不进行入队列出队列的操作。具体的思...

2020-02-12 19:12:24 478

原创 leetcode 链表的简单题目整理(21、83、141、160、203、206、234、237、876、1290)快慢指针 删除节点 环形指针.....

21 合并两个有序链表题目描述: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路: 注意可以新建哑节点做头结点。方便返回。class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* dummy = ne...

2020-02-06 22:56:29 144

原创 leetcode 图的最短路径问题 优先队列实现dijkstra算法(743、787、1334)

743 网络延迟时间题目描述: 有 N 个网络节点,标记为 1 到 N。给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。现在,我们向当前的节点 K 发送了一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1。注意: N 的范围在 ...

2020-02-02 16:23:14 1894

原创 leetcode 极小化极大(292、486、877) 两人博弈 区间动态规划

292 Nim游戏题目描述: 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。思路1: dfs方法 (超时)。 dfs由底向上,博弈,三种情况中任一种使当前人失败,则另一人采用最优策略可以在其上一步成功...

2020-01-31 19:36:47 538

原创 leetcode 猜数字大小1/2(374、375 二分、区间动态规划)

374 猜数字大小题目描述: 我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小;1 : 我的数字比较大;0 : 恭喜!你猜对了!思路: 二分猜数字。// For...

2020-01-30 13:54:26 480

原创 leetcode 第一次做并查集的题目(#^.^#) (547、684、721、1319、399)

547 朋友圈题目描述: 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中...

2020-01-29 18:26:20 207

原创 leetcode 回溯2(78、90、46、47 子集/全排列)

78 子集题目描述: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明: 解集不能包含重复的子集。思路: dfs回溯。class Solution {public: void dfs(vector<int>& nums, vector<vector<int>>& ans, vector<in...

2020-01-27 20:56:13 136

原创 leetcode 今天你学会回溯了么(39、40、216、377 组合总和1234 回溯/动态规划)

39 组合总和题目描述: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明: 所有数字(包括 target)都是正整数;解集不能包含重复的组合。思路: 回溯 + 剪枝。由于candidates数组中不存在重复元素,则不需判断解集中是否包...

2020-01-27 18:08:02 129

原创 leetcode 拓扑排序 BFS实现(207、210—课程表1/2)

207

2020-01-15 10:38:46 136

原创 leetcode 奇奇怪怪的BFS(529、417、1162、752、909)

529 扫雷游戏题目描述: 给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,...

2020-01-14 11:55:16 288 1

原创 leetcode 二维矩阵BFS(130、542、200、934、864(hard))

130 被围绕的区域题目描述: 给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。解释: 被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向相邻,则称它们是“相...

2020-01-14 10:41:36 428

原创 leetcode hard题目整理(#^.^#)(4、1220、410、85、149,363)

4 寻找两个有序数组的中位数题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。将题目转换为寻找两个数组合并后的第k大的元素(数组有序),k为(n +1) / 2或者分别为n / 2以及n / 2 + 1。递归改变k的大小。...

2019-12-27 21:32:34 259

原创 leetcode 两个/三个/四个数相加(1、167、653、15、18、454)哈希表 map.count() 双指针

11111111111111111

2019-12-06 18:01:13 216

原创 leetcode树,dp(105,106,198,213,337 从前序/中序/后续遍历数组构造树,打家劫舍-动态规划)

105 从前序与中序遍历序列构造二叉树题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树。可以假设树中没有重复的元素。给出形式如下:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]递归。根据前序遍历可知每次递归对应的根节点(即前序遍历数组中的第一个节点),由该根节点在中序遍历数组中的位置(用map保存)可知其左子树和右子树...

2019-11-24 19:44:47 143

原创 leetcode树(235、236、865、1123、1026公共祖先)

235 二叉搜索树的最近公共祖先题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”根据二叉搜索树的性质,找到根节点到两个给定节点的路径,然后遍历比较两个根节点的路径,直到两个节点值不相同,则前一...

2019-11-07 20:24:56 159

原创 leetcode 树(100、101 、226、617、110相同的树/对称的树/翻转二叉树/合并二叉树/平衡二叉树)

100 相同的树题目描述: 给定两个二叉树,编写一个函数来检验它们是否相同(两个树在结构上相同,并且节点具有相同的值)。返回bool类型答案。DFS。给定两个二叉树p和q,采用深度优先搜索,将问题转化为“判断p节点的子树和q节点的子树是否相同”。在遍历到的当前两个节点都为空或者都不为空但值相同的情况下,如果左(右)子树不同,那么p、q对应的子树必然不同,将每层遍历的结果返回到上一层。clas...

2019-11-07 20:24:41 145

原创 leetcode 树(543、637、563 、671二叉树的直径/层平均值/坡度/第二小的节点)

543 二叉树的直径题目描述: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。DFS深度优先搜索,每个节点保存其左右子树中最深的depth,在遍历到每个节点时,更新答案ans = max(ans, left_dep + right_dep - 2 * dep);class Solution {public: i...

2019-11-06 22:31:01 119

原创 leetcode 树题目整理二(111、104、112、113、437,687二叉树的最大/最小深度,路径总和123,最长同值路径)

111 二叉树的最小深度最小深度是从根节点到最近叶子节点的最短路径上的节点数量。采用DFS深度优先搜索,参数为当前节点及其对应深度,在每一层搜索中,设置变量ans为一个较大值,当遍历到叶子节点时,更新ans,并传回上一层,在向上传递过程中,比较左右子树传回的深度,并更新保持最小值。class Solution {public: int findMinDepth(TreeNode* ...

2019-10-31 16:25:59 176

原创 leetcode 树题目整理一(144/94/145/102/107/103含迭代与递归的区别,二叉树前序/中序/后序遍历,层次遍历)

迭代算法与递归算法的区别迭代算法迭代算法让计算机对一组指令进行重复执行。迭代是正向思维,从头到尾的思考问题。例如,计算从1到100的累加值,顺着往下累加,用程序表示为:int i= 1,sum= 0; while(i <= 100) { sum = sum + i; }...

2019-10-16 20:47:16 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除