leetcode
路啦路
博客仅当作个人笔记使用
展开
-
leetcode22. 括号生成,32. 最长有效括号(python)
括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入:n = 3 输出:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 深度优先搜索: class Solution: def generateParenthesis(self, n: int) -> List[str]: res = [] cur_str = '' .原创 2020-10-13 19:54:29 · 111 阅读 · 0 评论 -
8/25动态规划下
5. Leetcode72. 编辑距离 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 题目描述 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') rose -> ros (删除 'e')原创 2020-08-25 22:03:21 · 116 阅读 · 0 评论 -
8/24 动态规划
1. 最长上升子序列 题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。 def lengthOfLIS(self, nums: List[int]) -> int: if not nums:return 0 #原创 2020-08-24 20:42:07 · 110 阅读 · 0 评论 -
《剑指offer》python版本 分类刷题(上)
列表 列表反转: class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here if not listNode: return [] stack = [] p = listNode while p: stack.a原创 2020-07-10 10:33:34 · 271 阅读 · 0 评论 -
《剑指offer》python版本 分类刷题(下)
7/30 用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路 队列的Push就是直接进栈;Pop:节点进入stack1,然后再stack1的元素pop出,push到stack2中,stack2再pop出来就是先进先出的顺序了。 步骤: 判断stack2是否为空,不为空就pop 将stack1的节点pop出,然后push进stack2,再将stack2的元素pop。 class Solution: def __init__原创 2020-07-30 16:02:17 · 256 阅读 · 0 评论 -
分类刷题2——动态规划
动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 主要思想 若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。动态规划往往用于优化递归问题,例如斐波那契数列,如果运用递归的方式来求解会重复计算很多相同的子问题,利用动态规划的思想可以减少计算量。 动态规划法仅仅解决每个子问题一次,具有天然剪枝的功能,从而减少计算量, 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。 动态规划模板步骤:原创 2020-08-20 18:03:52 · 393 阅读 · 0 评论 -
数组中的逆序对(python)
数组中的逆序对 这个题就是在归并排序的合并的过程中,加入逆序对的统计。在看归并排序时先做一道简单题,合并两个有序数组。 题目说明:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 解题思路:设置两个指针分别指向两个数组,这两个指针指向的数字谁比较小就把它移到新数组种,同时指针往前1个位置 class Solution: def merge(self, nums1, nums2): # 设置两个指针分别指向两原创 2020-08-20 16:13:10 · 854 阅读 · 0 评论 -
分类刷题1——分治
文章目录分治引文主要思想分治算法的步骤分治法适用的情况伪代码举个栗子算法应用[169. 多数元素](https://leetcode-cn.com/problems/majority-element/)[53. 最大子序和](https://leetcode-cn.com/problems/maximum-subarray/)[50. Pow(x, n)](https://leetcode-cn.com/problems/powx-n/)参考资料 分治 引文 MapReduce(分治算法的应用) 是 Goo原创 2020-08-17 15:55:22 · 180 阅读 · 0 评论 -
二叉树的前序遍历、中序遍历、后序遍历,python递归及非递归实现
这块一直有点迷,梳理梳理。 1. 中序遍历 1.1 递归实现 每次递归,只需要判断节点是不是None,否则按照左中右的顺序打印出节点value值。 class Solution: def inorderTraversal(self, root): if not root: return None return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversa原创 2020-07-20 14:56:41 · 362 阅读 · 0 评论