——LeetCode
YY-帆S
萌新
展开
-
【PHP解法==LeetCode对撞指针类型问题】11. 盛最多水的容器 && 215.数组中的第K个最大元素
11.盛最多水的容器给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此...原创 2019-01-17 15:33:29 · 219 阅读 · 0 评论 -
【C++解法==LeetCode(二叉树中的递归4-公共祖先)】235.二叉搜索树的最近公共祖先 && 236.二叉树的最近公共祖先
目录235.二叉搜索树的最近公共祖先236.二叉树的最近公共祖先235.二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: r...原创 2019-02-22 22:32:08 · 186 阅读 · 0 评论 -
【PHP解法==LeetCode(二叉树中的递归5-操作二叉树)】226.翻转二叉树 && 108. 将有序数组转换为二叉搜索树 && 450. 删除二叉搜索树中的节点
目录226.翻转二叉树108. 将有序数组转换为二叉搜索树450. 删除二叉搜索树中的节点226.翻转二叉树翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问...原创 2019-02-23 08:52:10 · 197 阅读 · 0 评论 -
【PHP解法==LeetCode102.103.107.199】二叉树层次遍历相关问题
目录102.二叉树的层次遍历103.二叉树的锯齿形层次遍历二叉树的层次遍历解题方式:(利用队列)节点依次入队依次访问,队列形式[节点,层级],可根据层级将节点的值塞入结果数组中即可102.二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3...原创 2019-02-19 08:53:51 · 397 阅读 · 0 评论 -
【PHP解法==LeetCode优先队列】23. 合并K个排序链表
优先队列:维持一个有序的队列23. 合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解法:维持一个最小堆/队列1.构建一个最小堆...原创 2019-02-19 09:46:35 · 207 阅读 · 0 评论 -
【PHP解法==LeetCode(动态规划1-重叠子问题)】70.爬楼梯 && 120.三角形最小路径和 && 64.最小路径和
目录70.爬楼梯120.三角形最小路径和64.最小路径和大多数的动态规划,本质都是递归问题,只是在递归的过程中会有很多的重叠子问题对于重叠子问题,可以用记忆化搜索:自顶向下的解决问题,而动态规划是自底向上的解决问题。动态规划:将原问题拆解成若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的答案因此我们在做动态规划问题时,可以先思考他的记忆化搜索...原创 2019-03-02 10:20:41 · 413 阅读 · 0 评论 -
【PHP解法==LeetCode队列-广度优先遍历】279. 完全平方数 && 127.单词接龙 && 126.单词接龙 II
目录279. 完全平方数127.单词接龙126.单词接龙 II广度优先遍历可以解决:无权图的最短路径等问题以下的三道题,没有直接给一个图进行遍历,因此我们需要对题目进行分析,从而转化为图的思想去进行bfs或dfs279. 完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。...原创 2019-02-20 10:02:42 · 319 阅读 · 0 评论 -
【PHP解法==LeetCode(回溯递归1)】17.电话号码的字母组合 && 93. 复原IP地址 && 131. 分割回文串
目录17.电话号码的字母组合93. 复原IP地址131. 分割回文串17.电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", &原创 2019-02-26 10:01:32 · 400 阅读 · 0 评论 -
【PHP解法==LeetCode(动态规划4-(背包问题))】416.分割等和子集 && 322.零钱兑换 && 377.组合总和 && 474.一和零 && 139.单词拆分 && 494.目标和
目录416.分割等和子集322.零钱兑换377.组合总和474.一和零139.单词拆分494.目标和背包问题可参考动态规划-经典问题(0-1背包问题)分析及优化,进行理解416.分割等和子集给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100 数组的大小不会超过 200示...原创 2019-03-07 09:35:25 · 795 阅读 · 1 评论 -
【PHP解法==LeetCode(回溯递归2-排列)】46.全排列 && 47.全排列 II
目录46.全排列47.全排列 II46.全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]很明显的递归结构,可以利用递归回溯解决该问题。如下图,解法(1)使用[1,2,3]构造排列...原创 2019-02-26 18:54:18 · 315 阅读 · 0 评论 -
【PHP解法==LeetCode(回溯递归3-组合)】组合(77.39.40.216) && 子集(78.90) && 401.二进制手表
目录组合(77.39.40.216)77.组合39.组合总和40.组合总和 II216.组合总和 III子集(78.90)78.子集90.子集II401.二进制手表递归回溯通常解法:(1)初始化成员变量:为了减少递归中的参数传递,传递大参数比较耗时(2)初始化判断:对于特殊的结果,直接返回结果,无需进入递归(3)递归回溯:记录下标,保存一个暂存路...原创 2019-02-26 22:44:19 · 383 阅读 · 0 评论 -
【PHP解法==LeetCode(回溯递归4-二维平面上的回溯)】79.单词搜索 && 200.岛屿的个数 && 130.被围绕的区域 && 417.太平洋大西洋水流问题
目录79.单词搜索200.岛屿的个数130.被围绕的区域417.太平洋大西洋水流问题二维平面上的递归回溯,经常使用 FloodFill 算法,泛洪填充算法,也是深度优先dfs算法 例如从图的开始,向外扩散蔓延,像洪水泛滥一样扩散到满足条件的所有区域,即FloodFill 算法对于下列的题目,79和200是整个图进行FloodFill ,而130和417则是仅从边界进行泛...原创 2019-02-27 09:03:24 · 418 阅读 · 0 评论 -
【PHP解法==LeetCode(回溯递归5-人工智能基础)】51.52.N皇后 && 37.解数独
目录51.52.N皇后37.解数独51.52.N皇后——经典问题,八皇后n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。...原创 2019-02-27 22:16:09 · 355 阅读 · 0 评论 -
【PHP解法==LeetCode(动态规划2-最优子结构)】343.整数拆分 && 91.解码方法 && 62.63不同路径
目录343.整数拆分91.解码方法62.不同路径63.不同路径II最优子结构:通过求子问题的最优解,可以获得原问题的最优解343.整数拆分给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: ...原创 2019-03-03 23:20:15 · 425 阅读 · 0 评论 -
【PHP解法==LeetCode(动态规划3)】打家劫舍I,II,III(198.213.337) && 309. 最佳买卖股票时机含冷冻期
目录198.打家劫舍213.打家劫舍II337.打家劫舍III309. 最佳买卖股票时机含冷冻期198.打家劫舍绘制如下递归树,如考虑偷取[0 ... n-1]范围的所有房子,可以考虑偷取0,1,到n-1的房子。如偷取0,则下一步则考虑偷取[2...n-1]的所有房子,因为1与0相邻,所以不考虑偷取此递归树中,可以明显的看出有重叠子问题状态转移方程:f(x)表...原创 2019-03-05 08:31:12 · 323 阅读 · 0 评论 -
【PHP解法==LeetCode(动态规划4-(最长子序列))】300.最长上升子序列 && 376.摆动序列 && 5.最长回文子串 && 516.最长回文子序列 && 最长公共子序列/串
目录300.最长上升子序列376.摆动序列5.最长回文子串516.最长回文子序列最长公共子序列 && 最长公共子串300.最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:...原创 2019-03-09 23:28:20 · 598 阅读 · 0 评论 -
【PHP解法==LeetCode(二叉树中的递归3-验证)】101.对称二叉树 && 110.平衡二叉树 && 98. 验证二叉搜索树
目录101.对称二叉树110.平衡二叉树98. 验证二叉搜索树101.对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / ...原创 2019-02-22 21:24:37 · 252 阅读 · 0 评论 -
【PHP解法==LeetCode(二叉树中的递归2-路径之和)】路径总和(112.113.437) && 404.左叶子之和 && 129. 求根到叶子节点数字之和 && 257.二叉树的所有路径
目录路径总和I.II.III(112.113.437)112.路径总和.II.III(112.113.437)113.路径总和II437.路径总和III404.左叶子之和129. 求根到叶子节点数字之和257.二叉树的所有路径路径总和I.II.III(112.113.437)112.路径总和.II.III(112.113.437)给定一个二叉树和一个目标和,...原创 2019-02-22 09:46:20 · 308 阅读 · 0 评论 -
【PHP解法==LeetCode】172.阶乘后的零
172.阶乘后的零给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。题目的意思是末尾有几个0比如6! = 【1* 2* 3* 4* 5* 6】其中只有2*5末尾才有0,所以...原创 2019-01-24 14:59:04 · 128 阅读 · 0 评论 -
【PHP解法==LeetCode查找类型问题】349.两个数组的交集 && 202.快乐数 && 290.单词模式
查找问题多数是需要建立一个map或set哈希表来进行解答。349.两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一...原创 2019-01-24 15:20:35 · 281 阅读 · 0 评论 -
【PHP解法==LeetCode查找类型问题2(N数之和)】15.三数之和 && 16.最接近的三数之和 && 18.四数之和 && 454.四数相加II
目录15.三数之和16.最接近的三数之和18.四数之和454.四数相加IIN数之和的都可以利用暴力解,但是复杂度肯定都会过高因此可以先利用map存储一部分,或者利用双指针等方法,去优化解决方法,降低时间复杂度15.三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且...原创 2019-01-24 15:54:09 · 278 阅读 · 0 评论 -
【PHP解法==LeetCode滑动窗口类型问题】438.找到字符串中所有字母异位词 && 209.长度最小的子数组 && 76.最小覆盖子串(Hard)
438.找到字符串中所有字母异位词给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0,...原创 2019-01-19 18:57:33 · 241 阅读 · 0 评论 -
【PHP解法==LeetCode查找类型问题3(距离计算)】447.回旋镖的数量 && 149.直线上最多的点数(hard)
447.回旋镖的数量给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[...原创 2019-01-25 16:04:45 · 207 阅读 · 0 评论 -
【PHP解法==LeetCode查找类型问题4(配合滑动窗口)】220. 存在重复元素 III
217、219、220分别是存在重复元素题目的123,因此只分析一个就够220.存在重复元素 III给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示...原创 2019-01-28 11:57:52 · 287 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型(经典问题,反转链表)】206.反转链表 && 92.反转链表 II && 24. 两两交换链表中的节点 && 25. k个一组翻转链表(Hard)
目录206.反转链表 92.反转链表 II24. 两两交换链表中的节点25. k个一组翻转链表(Hard)206.反转链表 反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL$preNode : 指向前一节点 $curNod...原创 2019-02-02 12:46:13 · 319 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型(经典问题,删除元素)】237.删除链表中的节点 && 82. 删除排序链表中的重复元素 II && 19. 删除链表的倒数第N个节点
删除元素最常见的做法是1.利用curNode指针遍历一遍链表,保存前一指针preNode2.当curNode找到要删除元素,$preNode-next = $curNode->next如LeetCode:203.移除链表元素 和 83.删除排序链表中的重复元素 解法均如上,本文不做解析目录237.删除链表中的节点82. 删除排序链表中的重复元素 II19. 删除链...原创 2019-02-02 15:30:10 · 288 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型2】445.两数相加 II && 328. 奇偶链表 && 86. 分隔链表
目录445.两数相加 II328. 奇偶链表86. 分隔链表445.两数相加 II给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: ...原创 2019-02-02 16:30:07 · 411 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型(重排链表类型)】234.回文链表 && 143.重排链表 && 61.旋转链表
目录234.回文链表143.重排链表61.旋转链表234.回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true解析:回文即正反序都一样,所以只要找出中间节点,然后翻转后面部分的链表,再一一进行比较(找到中间节点,为LeetCode876...原创 2019-02-02 17:34:59 · 258 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型(链表排序)】147.对链表进行插入排序 && 148.排序链表
目录147.对链表进行插入排序148.排序链表147.对链表进行插入排序对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次...原创 2019-02-02 18:00:56 · 219 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型】构建PHP单链表测试用例
LeetCode上的单链表问题无法直接在本地进行测试直接在线上测试有会比较麻烦,因此可以自己构建一个单链表的测试类,用于完整的创建一条单链表代码执行结果******** 测试Insert ********head -> a -> b -> c -> d -> e -> f -&g原创 2019-01-30 00:05:49 · 186 阅读 · 0 评论 -
【PHP解法==LeetCode94.144.145】二叉树的前中后序递归与非递归PHP解法
文章目录1.递归(1)前序遍历(2)中序遍历(3)后序遍历2.非递归(根据节点的访问顺序)(1)前序遍历(2)中序遍历(3)后序遍历3.非递归(利用堆栈模拟递归过程)(1)前序遍历(2)中序遍历(3)后序遍历1.递归(1)前序遍历LeetCode 144题.二叉树的前序遍历前序遍历:打印节点->左结点->右结点class Solution { public $res ...原创 2019-02-08 23:06:23 · 192 阅读 · 0 评论 -
【PHP解法==LeetCode栈类型】71.简化路径 && 150.逆波兰表达式求值
目录71.简化路径150.逆波兰表达式求值栈类型还有LeetCode 20.有效的括号等题71.简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。请注意,返回的规范...原创 2019-02-08 23:41:28 · 155 阅读 · 0 评论 -
【PHP解法==LeetCode(二叉树中的递归1)】104.二叉树的最大深度 && 111.二叉树的最小深度 && 222.完全二叉树的节点个数
二叉树有天然的递归结构,特别适合用递归去解决问题,如最常见的前中后序遍历104.二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7...原创 2019-02-21 22:24:22 · 361 阅读 · 0 评论 -
【PHP解法==LeetCode(贪心算法)】455.分发饼干 && 392.判断子序列 && 435.无重叠区间
目录455.分发饼干392.判断子序列435.无重叠区间455.分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj>= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的...原创 2019-03-10 16:06:21 · 477 阅读 · 0 评论