
leetcode
疯琴
这个作者很懒,什么都没留下…
展开
-
leetcode 822. Card Flipping Game 翻牌游戏
题目桌上有N张牌,正反面各有一个正整数(正反面的数可能不同)。我们翻任意数量的牌,然后选一张牌。如果选择的这张牌背面的数字X不在桌面上的牌的数字里,X就是好数。问最小的好数是几,如果没有,就返回0。fronts[i] 和 backs[i] 代表桌面上第i张牌的正面和反面数字。一次翻牌调换牌的正反面数字,翻完以后原来冲上的数字到了下面,原来冲下的数字到了上面。示例:Input: f...原创 2018-11-03 16:02:59 · 559 阅读 · 0 评论 -
792. Number of Matching Subsequences
最近开始同时使用python和go做题,go的效率高很多,用python brute force的方法提交以后TLE,同样的方法用go可以AC,用python可以榨取更快的算法。题目给定一个字符串S和一个单词列表words,找到words里所有S的子串。Example :Input:S = “abcde”words = [“a”, “bb”, “acd”, “ace”]Outpu...原创 2019-01-06 09:33:14 · 243 阅读 · 0 评论 -
leetcode 37. Sudoku Solver 数独
思路这是第一个自己解出来的Hard。用N皇后的递归思路,扫每一个空格,遍历1-9看可以放哪个数字,如果都不能放就清理现场回到上一层递归继续遍历。后来参考别人的思路,模拟人解题,先找出每个位置可以填的候选数,按照可填候选数的数目排序,从最少的开始填,这样剪枝掉一些不必要的计算。代码class Solution: def isValidPosition(self, n, row, col...原创 2018-12-09 16:26:34 · 181 阅读 · 0 评论 -
leetcode 79. Word Search
思路DFS,由于有比较变态的测试用例,所以要特别注意剪枝,一旦搜到结果之后,在返回的时候尽快往递归和循环外面跳。注意代码里注释的地方,都是能加速的地方。代码class Solution: def exist(self, board, word): """ :type board: List[List[str]] :type word: ...原创 2018-12-13 09:29:32 · 154 阅读 · 0 评论 -
leetcode 22. Generate Parentheses
题目给定n对括号, 写一个函数生成所有正确组合形式的括号对。思路数学归纳法递归,n==1时是[’()’],然后针对1以后的第n层,就是将n-1层的每一个元素的每一个位置加一对括号生成一个新元素,这些元素加起来构成第n层的结果。代码class Solution: def generateParenthesis(self, n): """ :type ...原创 2018-12-01 21:51:19 · 169 阅读 · 0 评论 -
leetcode 51. N-Queens
之前写的8皇后蠢爆了,学习了一下,从新写,对递归认识进步一点。class Solution: def solveNQueens(self, n): """ :type n: int :rtype: List[List[str]] """ result = [] board = [-1 for ..原创 2018-12-04 20:49:28 · 253 阅读 · 0 评论 -
leetcode 236. Lowest Common Ancestor of a Binary Tree
题目给定一棵二叉树,找到给定的两个结点的最低共同祖先(LCA)。思路宽度优先搜索二叉树,使用一个字典parent记录每一对父子关系,设置早停标志flag,找到两个目标结点后就停止。然后通过父子关系字典构建一个列表list1一个集合set2,list1是其中一个结点到根节点的路径,是有顺序的,set2是另一个结点到根节点的路径包含的结点。逐个遍历list1,如果当前元素在set2中,该元素就是...原创 2018-11-27 14:11:10 · 156 阅读 · 0 评论 -
leetcode 402. Remove K Digits
题目给定一个用字符串表示的非负整数num,从这个整数中去掉k个数字,使得到的数字最小。思路暴扫,组合出剩余位数的全都可能的数字,逐个插入堆中,最后取出堆顶元素,TLE思考发现从左到右逐个扫描数字,如果后一个数字小于等于前一个数字,就把前一个数字去掉,得到的就是去掉一个数字以后的最小数字,依此类推,直到扫到最后一个数字,这时整个数字是按位数字从小到大排列的,如果此时去掉的数字不足k个,就从...原创 2018-11-25 17:52:31 · 223 阅读 · 0 评论 -
leetcode 300.Longest Increasing Subsequence 最长递增子序列 动态规划
题目给定一个未排序的整数数组,找到最长递增子序列的长度。思路动态规划,使用一个数组dp记录原数组每一个位置的数字和到这个位置为止的最长子序列长度,dp数组元素是元组——(a:当前位置最长子序列长度,b:当前位置数字),遍历数组,每遍历到一个数字i,找到dp数组里面b小于i的全部元组里面最大的a记为x,向dp数组追加一个元组(x+1, i),这样dp数组里面记录了原数组截至至每一个位置的最...原创 2018-11-14 17:38:42 · 235 阅读 · 0 评论 -
leetcode 53. Maximum Subarray 最大子数组 分治算法
题目给定一个整数数组,找出和最大的连续子数组(至少包含一个元素)并返回最大和。尝试使用分治算法实现思路参考了《算法导论》里关于分治的讲解,正好就是这个题目,不过它的方法比较细致,把最大子数组的位置也求出来了。这道题只要求最大和,我简化了一下。思路是把数组从中间分成两部分,最大子数组要么是左半部分,要么是右半部分,要么是跨越中点,包含左右两个部分。递归比较各层的这三个部分的最大子数组和。...原创 2018-11-11 21:05:11 · 233 阅读 · 0 评论 -
leetcode 938. Range Sum of BST
题目给定一颗二叉搜索树的根节点,返回节点值在L和R之间(包括L和R)的节点值的和。思路写了一个完整的二叉搜索树,调整一下中序遍历的方法比较L和R就行了,注意在递归调用时要写上L和R这两个参数。如果是没有重复数字的BST,可以在递归查找左叶子之后比较一下R和右叶子的值,如果完全相等就早停,速度快了一倍。代码# Definition for a binary tree node.# c...原创 2018-11-12 22:07:28 · 608 阅读 · 0 评论 -
leetcode 927.threeEqualParts 三等分
leetcode 927.threeEqualPartsclass Solution: def threeEqualParts(self, A): """ :type A: List[int] :rtype: List[int] """ A = [str(a) fo原创 2018-10-25 17:57:07 · 271 阅读 · 0 评论 -
leetcode 914. X of a Kind in a Deck of Cards
题目一摞牌,每张牌上写了一个整数,如果能找到一个大于等于2的数X,把牌分成1或多组满足下列条件:每组有X张牌每组里的每张牌上写得数字都是一样的Example 1:Input: [1,2,3,4,4,3,2,1]Output: trueExplanation: Possible partition [1,1],[2,2],[3,3],[4,4]Example 2:Input:...原创 2018-11-03 15:48:54 · 417 阅读 · 0 评论 -
LeetCode23 猴子补丁
本题并不难,但是使用heapq遇到一个问题,python3中如果类没有实现__lt__方法就不能进行比较,所以如果没有等号之间那段代码的话会报错TypeError: '<' not supported between instances of 'ListNode' and 'ListNode',leetcode的ListNode类已经固定了,不能在上面直接加方法,于是打个猴子补丁搞定。# ...原创 2019-04-19 15:42:08 · 335 阅读 · 0 评论