随笔分类 -  LeetCode

1 2 3 4 5 ··· 7 下一页
摘要:47. 全排列 II 题意 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 解题思路 去重的全排列就是从第一个数字起每个数分别与它后面非重复出现的数字交换。用编程的话描述就是第i个数与第j个数交换时,要求[i,j)中没有与第j个数相等的数。有两种方法(1)可以每次在需要交换时进行顺序 阅读全文
posted @ 2019-04-08 17:17 banananana 阅读(454) 评论(0) 推荐(0) 编辑
摘要:39. 组合总和 题意 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组 阅读全文
posted @ 2019-04-04 22:57 banananana 阅读(677) 评论(0) 推荐(0) 编辑
摘要:674. 最长连续递增序列 题意 给定一个未经排序的整数数组,找到最长且连续的的递增序列。 解题思路 从下标1的位置开始和前面的值进行比较,如果大于前面一个值,增加1,否则重置为1(因为肯定至少有1个); 从下标1的位置开始和前面的值进行比较,如果大于前面一个值,增加1,否则重置为1(因为肯定至少有 阅读全文
posted @ 2019-04-03 15:06 banananana 阅读(242) 评论(0) 推荐(0) 编辑
摘要:450. 删除二叉搜索树中的节点 题意 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明 阅读全文
posted @ 2019-04-02 07:06 banananana 阅读(569) 评论(0) 推荐(0) 编辑
摘要:236. 二叉树的最近公共祖先 题意 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 解题思路 后序遍历法,将pq的公共父节点问题转化为找到一个节点node使得p、q分别位于node的左右子树中; 若p和q要么分别位于左右子树中,那么对左右子结点调用递归函数,会分别返回p和q结点的位置 阅读全文
posted @ 2019-04-01 18:42 banananana 阅读(402) 评论(0) 推荐(0) 编辑
摘要:235. 二叉搜索树的最近公共祖先 题意 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 解题思路 利用BST的性质,如果该结点小于给定的其中一个结点,并且大于另外一个给定的结点,那么则认为该点是两个结点的最近公共祖先; 利用BST的性质,如果该结点小于给定的其中一个结点,并且大于另外 阅读全文
posted @ 2019-04-01 17:13 banananana 阅读(309) 评论(0) 推荐(0) 编辑
摘要:230. 二叉搜索树中第K小的元素 题意 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 解题思路 中序遍历,利用Python3中提供的生成器方法; 中序遍历,判断存储结点值的数组是否到到k 阅读全文
posted @ 2019-03-31 07:53 banananana 阅读(563) 评论(0) 推荐(0) 编辑
摘要:173. 二叉搜索树迭代器 题意 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 next() 和 hasNext() 操作的时间复杂度是 O(1),并使用 O(h) 内存,其中 h 是树的高度。你可以假设 next() 阅读全文
posted @ 2019-03-31 06:55 banananana 阅读(591) 评论(0) 推荐(0) 编辑
摘要:95. 不同的二叉搜索树 II 题意 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 解题思路 这道题目是基于不同的二叉搜索树进行改进的; 对于连续整数序列[left, right]中的一点 i,若要生成以 i 为跟结点的BST,则有如下的规律: i 左边的序列可以作为左子 阅读全文
posted @ 2019-03-29 15:59 banananana 阅读(669) 评论(0) 推荐(0) 编辑
摘要:96. 不同的二叉搜索树 题意 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 解题思路 对于n个结点,除去了跟结点,还剩余n-1个结点,因此左右子树的结点数分配方式如下: ​ 假定G(n)表示由连续的n个数形成的二叉搜索树的个数,并且以i作为分界点, 那么左子树为G(i- 阅读全文
posted @ 2019-03-28 12:11 banananana 阅读(280) 评论(0) 推荐(0) 编辑
摘要:429. N叉树的层序遍历 题意 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 解题思路 和二叉树的层次遍历的思想一样; 实现 阅读全文
posted @ 2019-03-28 10:16 banananana 阅读(384) 评论(0) 推荐(0) 编辑
摘要:107. 二叉树的层次遍历 II 题意 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。 解题思路 递归:利用前序遍历的思想,在递归过程中记录下结点的深度,在对应深度将结点加入到结果中; 迭代:使用两个队列是因为一个用于记录当前层的结点, 阅读全文
posted @ 2019-03-27 08:51 banananana 阅读(244) 评论(0) 推荐(0) 编辑
摘要:103. 二叉树的锯齿形层次遍历 题意 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 解题思路 和题目102一致; 实现 阅读全文
posted @ 2019-03-27 08:11 banananana 阅读(260) 评论(0) 推荐(0) 编辑
摘要:102. 二叉树的层次遍历 题意 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 解题思路 递归:利用前序遍历的思想,在递归过程中记录下结点的深度,在对应深度将结点加入到结果中; 迭代:使用两个队列是因为一个用于记录当前层的结点,另外一个则记录下一层的结点,用于后面 阅读全文
posted @ 2019-03-27 07:58 banananana 阅读(212) 评论(0) 推荐(0) 编辑
摘要:94. 二叉树的中序遍历 题意 给定一个二叉树,返回它的中序 遍历数组; 解题思路 递归:往左子结点深度递归,在其代码下面加入当前结点的值,接着往右子结点进行深度递归; 迭代:利用栈后进先出的特性,一直将左子结点都加入到栈中,直到其不存在时,将当前结点的值加入到结果列表中,接着将当前结点的右结点加入 阅读全文
posted @ 2019-03-27 07:10 banananana 阅读(203) 评论(0) 推荐(0) 编辑
摘要:203. 移除链表元素 题意 删除链表中等于给定值 val 的所有节点; 解题思路 把下个结点的值赋值给当前结点,删除下一个结点; 增加一个多余的头结点,方便记录下前结点,将前结点指向下个结点,删除当前结点; 实现 阅读全文
posted @ 2019-03-26 09:12 banananana 阅读(199) 评论(0) 推荐(0) 编辑
摘要:19. 删除链表的倒数第N个节点 题意 删除链表的倒数第N个结点 解题思路 先让快结点移动n个位置,接着再让慢结点和快结点同时移动,发现出慢结点就是要删除的结点,将前结点指向删除结点的下一个结点即可; 实现 阅读全文
posted @ 2019-03-26 06:28 banananana 阅读(179) 评论(0) 推荐(0) 编辑
摘要:237. 删除链表中的节点 题意 删除给定的链表结点; 解题思路 其实是删除下一个结点,具体做法为将下一个链表的值赋值给当前的删除结点,并且将当前结点指向下下个结点;循环链表,不断的将下一个结点的值赋值给当前结点(需要注意删除的是尾部结点,因为题目提示说不会这么做所以就不用处理,其实也无法处理。。。 阅读全文
posted @ 2019-03-25 09:26 banananana 阅读(233) 评论(0) 推荐(0) 编辑
摘要:141. 环形链表 题意 判断链表中是否有环; 提升: 空间复杂度为O(1) 解题思路 标记链表结点是否已经访问过(通过Python的属性很容易实现);使用集合记录下访问过的结点的id;慢结点每次走一步,快结点每次走两步,如果存在环的话两者肯定会相逢(考点!!); 标记链表结点是否已经访问过(通过P 阅读全文
posted @ 2019-03-25 08:30 banananana 阅读(219) 评论(0) 推荐(0) 编辑
摘要:2. 两数相加 题意 倒序的数字进行相加; 解题思路 数字进行倒序还算是简单的,因为我们正常的运算也是从按照这个顺序,正好可以方便计算; 实现中的两个方法是一样的,不太懂为啥下面的运行时间查这么多; 实现 提升 如果这个链表存储的数字的顺序是正常的话,那么有两种方法: 将链表进行倒序,接着就和上面的 阅读全文
posted @ 2019-03-22 10:00 banananana 阅读(229) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页
点击右上角即可分享
微信分享提示