LeetCode
伊直程序媛
where my heart get peace,where my self get home
展开
-
动态规划
解法class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ if n==0 or n==1: return 1 a,b=1,2原创 2019-02-24 21:56:33 · 107 阅读 · 0 评论 -
正则表达式匹配-力扣
考察知识点python 动态规划 回溯算法代码class Solution(object): def isMatch(self, s, p): """ :type s: str :type p: str :rtype: bool """ memo={} def dp(i,...原创 2019-07-28 16:11:53 · 235 阅读 · 0 评论 -
单词拆分
解法memo存放的是s中已经匹配的部分的首位坐标,例如s = “leetcode”, wordDict = [“leet”, “code”]则memo=[0,4,8]class Solution(object): def wordBreak(self, s, wordDict): """ :type s: str :type wordD...原创 2019-08-05 14:44:36 · 364 阅读 · 0 评论 -
通配符匹配-力扣
考察知识点回溯法,动态规划思路一用一个(m+1)*(n+1)的数组辅助,values[i][j]表示s到i位置,p到j位置位置是否匹配成功①初始化:values[0][0]:s和p都为空字符串时,为True第一行values[0][j]:s为空,与p匹配第一列values[i][0]:全部为False②双层循环判断如果(s[i] == p[j] || p[j] == “?”) ...原创 2019-07-27 15:35:23 · 151 阅读 · 0 评论 -
删除无效的括号
考察知识点回溯,深度搜索思路一给定字符串:①首先求出不匹配的左括号数和右括号数。②在深度搜索过程中去除不匹配的符号,举例()())()③当左括号数等于右括号数时,判断是否匹配代码class Solution(object): def removeInvalidParentheses(self, s): """ :type s: str ...原创 2019-07-26 13:23:03 · 218 阅读 · 0 评论 -
完全平方数-力扣
方法一(动态规划)用memo记录每一个比n小的数的最小完全平方个数,k记录的是n开平方的整数部分。class Solution(object): def numSquares(self, n): """ :type n: int :rtype: int """ memo=[0]*(n+1) ...原创 2019-08-03 13:14:02 · 185 阅读 · 0 评论 -
买卖股票-力扣
力扣中有6题关于股票的问题,我们先从最简单的出发,逐步解决所有问题。参考大佬们的解答,发现有一个用状态机的方法,比较通用且好理解。参考:只存在一次买卖交易- 用imin记录遍历过程中的最小值,imax记录到遍历的数据前的最大利润class Solution(object): def maxProfit(self, prices): """ :typ...原创 2019-07-31 19:23:37 · 392 阅读 · 0 评论 -
乘积最大子序列-力扣
思路分析:整数数组,只有正数时,每一个数与前一个数相乘都大于等于这个数,考虑负数时,乘奇数个负数,整个结果变成最小,偶数个负数时,负号抵消。思路:使用三个变量,maxVal记录最大结果,maxTem 保存最大的,minTem保存最小的。遍历整个数组,如果遇到负数,那么会导致最大的变最小的,最小的变最大的。因此交换两个的值代码import sysclass Solution(object...原创 2019-07-29 13:43:35 · 127 阅读 · 0 评论 -
单词搜索
单词搜索2:考察知识点前缀树,回溯算法思路:1.将word存放在前缀树中,前缀树的结尾用符号“#”表示,且结尾“#”键对应的值为word。2.遍历board中的每一个元素,若是这个元素未被遍历且存在word前缀树中,则进行下一层循环。3.若是当前遍历board元素对应word前缀树的“#”。说明此元素存在board中。代码:class Solution(object): ...原创 2019-07-17 14:44:29 · 142 阅读 · 0 评论 -
前缀树(Trie)
定义:前缀树(Trie树),即字典树,又称单词查找树或键树,是一种树形结构。核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。优点:最大限度地减少无谓的字符串比较,查询效率比哈希表高。与哈希表对比哈希表可以在 O(1)O(1) 时间内寻找键值,却无法高效的完成以下操作:1.找到具有同一前缀的全部键值。2.按词典序枚举字符串的数据集。随着哈希表大小增...原创 2019-07-15 16:36:58 · 85 阅读 · 0 评论 -
计数质量(力扣)
下面用n=10来说明过程class Solution(object): def countPrimes(self, n): """ :type n: int :rtype: int """ if n < 3: return 0 prime = [1] * n ...原创 2019-02-26 19:40:08 · 144 阅读 · 0 评论 -
戳破气球-LeetCode
思路dp[i][j] 表示戳破 [i+1…j-1] 号气球的最大收益。假设 k 号气球(i+1 <= k <= j-1)是 [i+1…j-1] 中最后一个被戳破的,则dp[i][j] = max {for k = range(i+1, j -1) nums[i] * nums[k] * nums[j] + dp[i][k] + dp[k][j]}代码:class Solut...原创 2019-08-07 16:40:41 · 161 阅读 · 0 评论