
leetcode解题
文章平均质量分 77
六月香樟
晚钟送终了这一天, 牛羊咻咻然徐度原野, 农夫倦步长道回家, 仅余我与暮色平分此世界。
展开
-
leetcode 第57题插入区间
leetcode 第57题插入区间问题分析问题如下(传送门)这里要将newInerval插入到intervals中,并保持给定的顺序,此外,还可能会涉及到区间的合并。我们将问题简单化,被插入的序列有两个数,每个数在待插入序列中的位置只会存在两种情况,即在某个区间内,或在区间之外,所以整个问题只会在下面四种情况之一:左操作数是否在区间内右操作数是否在区间内11100100先把这四种情况放到一边,再来看看,将newInerval插入后,它的左右值是原创 2022-05-04 23:17:25 · 446 阅读 · 0 评论 -
leetcode 第386题 字典序排数 python解法
leetcode 第386题 字典序排数 python解法问题分析先看题目:题目要求将整数按照字典序排序,一看到这个我先想到了字符串是按照字典序排序的。所以,先想的方法是先将所有的整数存到数组,然后全部转为字符串。接着对字符串数组进行排序,最后将字符串转为整形数组。这种方法思路很简单,而且容易写。但是这里用到了字符串的排序,所以有点投机取巧。另外,该方法的时间复杂度大于O(n)。另一种方法...原创 2019-01-30 16:38:21 · 856 阅读 · 0 评论 -
leetcode 第698题 划分为k个相等的子集 python解法
leetcode 第698题 划分为k个相等的子集 python解法最近在刷之前没有解决的题,我觉得挺难的,加上过年在家,日子安逸,所以这道题写了很长时间。╮(╯▽╰)╭问题分析这道题首先从字面上看,如果能将给定的数组划分k个相等的子集,那么这个数组的和一定能被k整除,所以这是第一个条件;另外,如果数组中最大的数大于整除后的商,那么这个数组也不满足,这是第二个条件,这两个条件可以放在前面作...原创 2019-02-11 23:32:54 · 835 阅读 · 1 评论 -
leetcode 第198题 打家劫舍, 第213题 打家劫舍 II , 第337题 打家劫舍 III(Python解法)
leetcode 第198题 打家劫舍, 第213题 打家劫舍 II , 第337题 打家劫舍 III(Python解法)Leetcode中最聪明的小偷—做程序员不如做小偷!问题分析198题 打家劫舍第一题比较简单,具体如下:首先该题可以看成是一个动态规划的问题,即从一个很小的范围开始求解,慢慢扩大到n个房子。由于不能偷连续的两家,所以其状态转移方程可以写为:dp[n] += ma...原创 2019-02-18 18:49:21 · 539 阅读 · 0 评论 -
leetcode 第924题 尽量减少恶意软件的传播 python解法
leetcode 第924题 尽量减少恶意软件的传播 python解法问题分析最近在看并查集的概念,而leetcode第924题是一道可以用这种方法来解答的(不排除其它的方法)。具体如下:并查集的概念最主要的就是将相互关联的对象连接起来,作为一个大的集合。而本题就可以将相互连接的节点放到同一个集合中,在这个集合中,只要有一个节点被病毒感染,那么集合中的其它节点也全部被感染。此外,还有一个...原创 2019-02-20 21:03:50 · 695 阅读 · 0 评论 -
leetcode 第907题 子数组的最小值之和 python解法
leetcode 第907题 子数组的最小值之和 python解法问题分析问题如下(传送门),题目的意思是将数组所有的连续子数组找到,然后将所有子数组中的最小值找到并求和。最简单的方法就是找到所有的子数组,然后得到最小值和。但这样最后肯定会超时的,不予考虑。题目的提示是用栈来做这个题目,所以先往这方向上想。进一步分析,假设从数组的头部遍历,如果后面的数大于前面的数。那么这两个数构成的子数...原创 2019-03-03 19:27:37 · 699 阅读 · 0 评论 -
leetcode 第215题 数组中的第K个最大元素(双解法—快速排序和堆排序)
第215题 数组中的第K个最大元素(双解法—快速排序和堆排序)问题分析原创 2019-05-24 13:02:48 · 364 阅读 · 0 评论 -
leetcode 第297题 二叉树的序列化与反序列化
leetcode 第297题 二叉树的序列化与反序列化题目分析题目(传送门)如下:题目的意思是让设计一个类,类中的一个方法能够将数转化成字符串,另一个方法就是将生成的字符串复原成树。类似的题目还有449. 序列化和反序列化二叉搜索树 。不过第449题好做一点,因为是二叉搜索树,所以我们可以先得到中序遍历得结果,然后将中序遍历排序就可以得到先序遍历结果,最后就可以根据先序遍历和中序遍历复原二...原创 2019-06-05 19:06:01 · 248 阅读 · 0 评论 -
leetcode 第399题 除法求值
leetcode 第399题 除法求值问题分析问题如下(传送门)题目给了一组方程式,每个方程式有两个变量,分别为被除数和除数,最后的商在对应位置的方程式结果中。最后求的就是在问题方程式中解出每个方程。这个题目可以用并查集的方法来解决,我们可以将具有联系的所有变量归类到同一个集合中,在一个集合中,任意两个变量直接的关系都可以得到,所有只要问题方程式中的两个变量在同一个集合就能很方便的得到两者...原创 2019-06-06 14:33:24 · 519 阅读 · 0 评论 -
leetcode 第141题 环形链表, 第142题 环形链表 II , 第287题 寻找重复数(Python解法)
leetcode 第141题 环形链表, 第142题 环形链表 II , 第287题 寻找重复数(Python解法)今天的前两题是关于环形链表的,第三题是要找出数组中出现的重复数字,乍一看和前两题无关,但是最后也用到了环形链表的知识,只是这里的着手点比较隐蔽。问题分析141题 环形链表先看141题,141题是给出一个链表,然后判断该链表是否是一个循环链表,如果是返回True,如果不是返回F...原创 2019-02-09 15:06:03 · 305 阅读 · 0 评论 -
leetcode 第892题 三维形体的表面积 python解法
leetcode 第892题 三维形体的表面积 python解法问题分析第892题具体内容如下:题目描述很简洁,就是去求空间中由多个立方体构成的结构的总表面积,这个题目比较麻烦的一点就是如果相邻位置有立方体存在的话,那么这么立方体的侧面积就会有一部分被掩盖,所以在考虑每个位置立方体表面时一定要注意相邻位置的立方体情况。我的做法是将每行和每列单独拿出来观测,假设所给的二维数组如下:以第...原创 2019-02-21 19:31:34 · 461 阅读 · 0 评论 -
leetcode 第713题 乘积小于K的子数组 python解法
leetcode 第713题 乘积小于K的子数组 python解法题目解析开始拿到这个题目的时候,我首先想到的是用动态规划来求解,建立一个二位数组dp,其中dp[i][j]代表的是数组中下标为i到j所有的数累乘的结果,状态转移方程也比较好些,两层循环。外层循环遍历整个数组,内层循环遍历外层循环的值到数组最后一位的所有值。dp[i][j] = dp[i][j-1] * nums[j] (j为内...原创 2019-02-03 13:00:41 · 644 阅读 · 0 评论 -
leetcode 第877题 石子游戏 python解法(用时420ms)
leetcode 第877题 石子游戏 python解法(用时420ms)该题是典型的双人回合制博弈游戏,两个人轮流从石子堆中拿出石子,其中石子都是按行一行行排好的,每个回合只能从头或者尾拿出一行石子。石子排列的行数是偶数,而且石子的总数是奇数,这样说明到最后不会出现平局。问题分析动态规划这题本意是要求使用动态规划,动态规划最重要的是要写出状态转移方程。假设在某个状态时石子的排列为[2,4...原创 2018-12-27 13:07:05 · 750 阅读 · 3 评论 -
leetcode 第78题 子集 python解法(用时48ms)
leetcode 第78题 子集 python解法(用时48ms)问题分析该问题要求返回数组的所有子集,一个数组子集的个数等于2的数组长度次幂(2^(len(nums))。首先这道题有多种解法:有使用深度优先遍历来做的,还有使用递归法来做,还有一种解法是使用位运算来计算。比如,数组[1,2,3]的长度为3,那么子集的个数就等于8,而从0到7如果分别用二进制表示就是000,001,010,011...原创 2018-12-22 20:28:37 · 357 阅读 · 0 评论 -
leetcode第115题 不同的子序列 python解法(用时48ms)
leetcode第115题 不同的子序列 python解法(用时28ms)该题的意思就是在一个字符串中找出与给定字符串相同的子序列的个数。例如在S= "rabbbit"这个字符串中找到与 T="rabbit"相等的子序列的个数。问题分析首先,这题最好使用动态规划(该题也被划分动态规划这一类)。动态规划时通过组合子问题的解而解决整个问题的。(算法导论第192页)。以上面的字符串为例,如果想要找...原创 2018-12-18 21:09:40 · 362 阅读 · 0 评论 -
leetcode 第102题 二叉树的层次遍历, 第103题二叉树的锯齿形层次遍历, 第107题 二叉树的层次遍历 II
leetcode 第102题 二叉树的层次遍历, 第103题二叉树的锯齿形层次遍历, 第107题 二叉树的层次遍历 II问题分析这三道题都考察的都是二叉树的广度优先遍历,二叉树的广度优先遍历非常明显,就是按照顺序输出每一层的节点。这三题都是一个套路,同一种方法只要做一点修改就行了。102 题 二叉树的层次遍历这一题是为了按照顺序输出给定二叉树的每一层节点的值,其中每一层的值作为一个数组。具...原创 2019-01-10 18:44:25 · 333 阅读 · 0 评论 -
leetcode 第62题 不同路径, 第63题 不同路径 II, 第64题,最小路径和(python解法)
leetcode 第62题 不同路径, 第63题 不同路径 II, 第64题,最小路径和 (python解法)问题解析最近在写动态规划的题目,刷题时看到这三道题,觉得很有意思。这三题的内容基本差不多,可以看成时迷宫问题(但是要简单的多,因为可以移动的方向只有两个,向下或向右),所以用动态规划解比较方便。第62题: 不同路径它给定两个整数代表移动网格的大小,所以我们可以先利用生成一个与网格大...原创 2019-01-05 15:50:00 · 363 阅读 · 0 评论 -
leetcode 第75题 颜色分类 python解法
leetcode 第75题 颜色分类 python解法问题分析先看题目其实题目的要求很简单,就是将一个仅包含0,1,2的数组进行排序,但是更高的要求时只是用常数空间,以及仅用一趟扫描。所以这两个要求就禁止了大多数的排序算法。好在这个数组只有三个数字0,1,2,也就是说排序后,数组的前面肯定都是0,后面都是2,中间都是1,这一点时可以确定的。那么就有这样一种思路,就是遍历数组,如果是0,就...原创 2019-01-12 17:38:56 · 408 阅读 · 1 评论 -
leetcode 第152题 乘积最大子序列 python解法
leetcode 第152题 乘积最大子序列 python解法问题分析题目的要求是在一个整数数组中找到乘积最大的一个连续子序列,数组里的数可正可负可零。首先用一个具体的例子来讲解一下我的思路,假设所给的数组如下:[2, -1, 4, -2, -3, 0, 1, 2]先定义最大的数为数组的第一个元素,即2,并设置当前数为1。然后从左向右遍历,在没有遇到零之前,将遍历的数不管是正数还是负数...原创 2019-01-19 20:00:32 · 642 阅读 · 0 评论 -
leetcode 第144题 二叉树的前序遍历, 第94题二叉树的中序遍历, 第145题 二叉树的后序遍历
leetcode 第144题 二叉树的前序遍历, 第94题二叉树的中序遍历, 第145题 二叉树的后序遍历问题分析这三道题目都是关于二叉树深度优先遍历的题目,我们在学数据结构时都会接触到这个题目,不过用的都是递归的方法。递归的方法思路简单,代码简洁。但是这三道题要求最好不用递归而用迭代的方法。用迭代法去解递归的题目往往会复杂一点,这里我们可以用栈来模拟递归的过程,从而去解题(栈和递归的本质是一...原创 2019-02-01 20:42:41 · 271 阅读 · 0 评论 -
leetcode 第105题(从前序与中序遍历序列构造二叉树) ,第106题(从中序与后序遍历序列构造二叉树)python解法(用时40ms)
leetcode 第105题(从前序与中序遍历序列构造二叉树) ,第106题(从中序与后序遍历序列构造二叉树)python解法(用时40ms)先从105题开始:第105题是利用前序和中序恢复二叉树,主要还是应用递归的思想。首先看一个简单的例子,在如下树中,由于前序遍历第一个数是父节点的值(1),所以将其构造成一个节点。接下来,在中序遍历中找到这个值的索引(5),那么这个索引将中序遍历分成了两...原创 2018-12-13 21:59:33 · 335 阅读 · 0 评论