LeetCode
LeetCode相关算法题
程序员进化者
这个作者很懒,什么都没留下…
展开
-
22-Generate Parenthesis-python
题目:输入括号对数n,返回合法的括号形式 def generateParenthesis(n): res = [] gen(0,0,n,res,'') return res def gen(left,right,n,res,path): if left == n and right == n: res.append(path) ...原创 2019-08-19 21:02:00 · 150 阅读 · 0 评论 -
5-最长回文子串-python
题目:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。 start,maxlen = 0,0 def longestPalinrome(s): if len(s)<2: return s for i in range(len(s)): extendPal(s,i,i) ex...原创 2019-08-28 21:32:00 · 85 阅读 · 0 评论 -
47-礼物的最大价值-python
题目:在一个m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物? def get_max_value(m_n): rows = len(m_n) cols = len(m_n[1]) # 注...原创 2019-09-06 10:04:00 · 138 阅读 · 0 评论 -
93-复原IP地址-python
题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。例如,输入: "25525511135",输出: ["255.255.11.135", "255.255.111.35"] def restore_ip_address(s): if len(s)<4 or len(s)>12: return [] res = [] ...原创 2019-08-30 20:57:00 · 403 阅读 · 0 评论 -
518-零钱兑换2-python
题目:给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 def coins_change(coins,amount): dp = [0] * (amount+1) dp[0] = 1 for j in range(len(coins)): for i in range(1,amount+1...原创 2019-08-30 09:19:00 · 252 阅读 · 0 评论 -
322-零钱兑换1-python
题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。 def coins_change(coins,amount): dp = [amount+1]*(amount+1) dp[0] = 0 for i in range(1,amount+1):...原创 2019-08-30 09:17:00 · 169 阅读 · 0 评论 -
42-连续子数组的最大和-python
题目:输入一个整数数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 分析:使用动态规范的方法做,状态方程为: def great_sum_array(arr): if len(arr)<1: return 0 length = len(arr) i = 1 ...原创 2019-08-26 19:07:00 · 95 阅读 · 0 评论 -
146-LRUCache-python
题目:设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据get和 写入数据put。 class LRUCache(object): def __init__(self,capacity): self.dic = {} self.remain = capacity def get(self,key): ...原创 2019-08-22 21:35:00 · 94 阅读 · 0 评论 -
76-最长上升子序列-python
题目:求一个无序数组中,最长上升子序列。子序列不一定是连续的。 def lengthOfLIS(nums): if len(nums)<1: return 0 dp = [1]*len(nums) for i in range(len(nums)): for j in range(i): if num...原创 2019-08-22 21:03:00 · 101 阅读 · 0 评论 -
208-Implement Trie(Prefix Tree)-python
题目:实现一个字典树 class Trie(object): def __init__(self): self.root = {} self.end_of_word = '#' def insert(self,word): node = self.root for char in word: ...原创 2019-08-19 22:01:00 · 103 阅读 · 0 评论 -
69-求一个整数的平方根-python
题目:求整数n的平方根 def mySqrt(n,f): if n <0: return None if n == 0 or n == 1: return n l,r = 0,n while abs(r-l)>f: mid = (l+r)/2 if mid<n/mid: ...原创 2019-08-19 21:20:00 · 659 阅读 · 0 评论 -
41-数据流中的中位数-python
题目:如何得到一个数据流中的中位数? import heapq class GetMedian(object): def __init__(self): self.max_heap = [] self.min_heap = [] self.k = 0 def insert(self,data): if se...原创 2019-08-15 22:27:00 · 94 阅读 · 0 评论 -
206-反转链表-python
题目:反转一个链表 def reverseList(head): cur,pre = head,None while cur: cur.next,pre,cur = pre,cur,cur.next return prev 注: python超简洁版的,值得学习参考 ...原创 2019-08-16 16:45:00 · 120 阅读 · 0 评论 -
20-Valid Parentheses-python
题目:判断大、中、小括号是否合法。“()”、"([)]"、"{(([])}" def isValid(string): dic = {'}':'{',']':'[',')':'('} stack = [] for s in string: if s not in dic: stack.append(s) e...原创 2019-08-16 19:54:00 · 158 阅读 · 0 评论 -
703-Kth Largest Element in a Stream-python
题目:返回数据流中的第K大元素 class KthLargest(object): def __init__(self,k): self.min_heap = [] self.k = k def add(self,data): if len(self.min_heap)<self.k: hea...原创 2019-08-16 20:30:00 · 85 阅读 · 0 评论 -
239-Sliding Window Maximum-python
题目:返回滑动窗口中的最大值 def maxSlidingWindow(nums,k): if not nums: return [] window,res = [],[] for i ,x in enumerate(nums): if i>=k and window[0]<=i-k: wind...原创 2019-08-16 20:41:00 · 132 阅读 · 0 评论 -
98-Validate Binary Search Tree-python
题目:验证一个二叉树是否为二叉排序树 def isValidBST(root): inorder = inorder(root) return inorder == list(sorted(set(inorder))) def inorder(root): if root is None: return [] return inorder...原创 2019-08-18 16:54:00 · 104 阅读 · 0 评论 -
235-Lowest Common Ancestor of a Binary Search Tree-python
题目:二叉排序树最近公共祖先 def lowest_CommonAncestor(root,p,q): if p.val <root.val > q.val: return lowest_CommonAncestor(root.left,p,q) if p.val >root.val <q.val: return ...原创 2019-08-18 17:19:00 · 113 阅读 · 0 评论 -
236-Lowest Common Ancestor of a Binary Tree-python
题目:普通二叉树的最小公共节点 def lowest_CommonAncestor(root,p,q): if root == None or root == p or root == q: return root left = lowest_CommonAncestor(root.left,p,q) right = lowest_CommonA...原创 2019-08-18 17:27:00 · 84 阅读 · 0 评论 -
50-Pow(x,n)-python
题目:求x的n次方 def myPow(x,n): if not n: return 1 if n<0: return 1 / myPow(x,-n) if n % 2: return x*myPow(x,n-1) return myPow(x*x,n//2) 注: 如果n为0,直接返回1; 如果...原创 2019-08-18 20:58:00 · 86 阅读 · 0 评论 -
102-二叉树层次遍历-python
题目:按层输出二叉树,每层一行 def levelOrder(root): if not root: return [] queue,res = [],[] queue.append(root) while queue: level_size = len(queue) current_level = [] ...原创 2019-08-18 21:31:00 · 104 阅读 · 0 评论 -
104-111-二叉树最大深度和最小深度-python
题目:求一个二叉树的最大深度和最小深度 def max_depth(root): if not root: return 0 return 1 + max(max_depth(root.left),max_depth(root.right)) def min_depth(root): if not root: return 0 ...原创 2019-08-18 21:58:00 · 120 阅读 · 0 评论 -
72-编辑距离-python
给定两个单词word1和word2,计算出将word1转换成word2所使用的最少操作数 。 你可以对一个单词进行如下三种操作:1、插入一个字符2、删除一个字符3、替换一个字符 def min_distance(word1,word2): word1_len, word2_len = len(word1), len(word2) dp = [[0] * (...原创 2019-09-11 22:35:00 · 157 阅读 · 0 评论 -
11-盛水最多的容器-python
题目:给定一个数组,代表木板的高度。选两个木板,求两个木板的最大盛水量。 def max_area(arrys): l,r = 0,len(arrys)-1 res = 0 while l<r: contain = min(arrys[l],arrys[r])*(r-l) if contain>res: ...原创 2019-09-14 13:12:00 · 98 阅读 · 0 评论 -
42-蓄水池-python
题目:给定一个数组,每个数表示宽度为 1 的柱子的高度,计算按此排列的柱子,下雨之后能接多少雨水。 def trap(arrys): res = 0 l,r = 0,len(arrys)-1 max_left,max_right = 0,0 while l<r: max_left = max(arrys[l],max_left) ...原创 2019-09-14 14:28:00 · 263 阅读 · 0 评论