
LeetCode
LeetCode
嘀嗒嘀嘀嗒嘀
别低头,王冠会掉
展开
-
【leetcode】字符串匹配
KMP算法https://leetcode-cn.com/problems/implement-strstr/submissions/返回p中匹配s的子串的起始位置def KMP(pattern): M = len(pattern) dp = [[0 for i in range(26)] for j in range(M)] dp[0][ord(patter...原创 2019-10-28 22:43:50 · 369 阅读 · 0 评论 -
【leetcode】硬币划分+整数划分
硬币划分:牛客代码提交链接将n用[1, 5, 10, 25]表示,求方式个数。对1000000007取余class Coins: def countWays(self, n): coins = [1, 5, 10, 25] MOD = 1000000007 d = [0 for i in range(n+1)] d[0] ...原创 2019-10-27 22:41:56 · 608 阅读 · 1 评论 -
[leetcode]二叉树遍历的非递归code-前中后+最近公共父节点
非递归框架# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def orderTr...原创 2019-10-26 19:24:11 · 307 阅读 · 0 评论 -
【leetcode】最小覆盖子串
时间复杂度还是高,双指针有待优化class Solution: def minWindow(self, s: str, t: str) -> str: se = set(list(t)) p = [] ans = "" maxn = len(s) + 1 from col...原创 2019-10-26 13:23:07 · 235 阅读 · 0 评论 -
【leetcode】104. Maximum Depth of Binary Tree
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): d...原创 2018-05-21 19:44:27 · 323 阅读 · 0 评论 -
【leetcode】100. Same Tree
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSameTree(se...原创 2018-05-21 19:32:11 · 297 阅读 · 0 评论 -
【leetcode】Longest Palindromic Subsequence
这个DP需要两步完成 [Math Processing Error]dp[i][j]={max(dp[i+1][j],dp[i][j−1])dp[i+1][j−1]+2dp[i][j] = \lbrace{max(dp[i+1][j],dp[i][j-1])}^{dp[i+1][j-1]+2} //C++ AC代码class Solution {public: int long...原创 2018-05-20 22:55:41 · 230 阅读 · 0 评论 -
【leetcode---DP】70.Climbing Stairs
class Solution(object): def climbStairs(self, n): fun = [] fun.append(1) fun.append(1) for i in range(2,n+1): fun.append(fun[i-1]+fun[i-2]) ret...原创 2018-05-20 18:54:58 · 228 阅读 · 0 评论 -
【leetcode---DP】746. Min Cost Climbing Stairs
动态规划(Dynamic programming, DP)如果我们用一个数组dp[]来存放到达每一层所需要的花费值。最终结果是求dp[cost.length]的值。 每次可以走1层或者2层,并且可以从0或者从1开始,所以可以得到dp[0]为0,dp[1]为0 从2开始,dp[i]可以由通过dp[i-2]走2层或者通过dp[i-1]走一层到达,而这i-2和i-1层所要花费的值分别为cost[...原创 2018-05-20 18:23:06 · 277 阅读 · 0 评论 -
【leetcode---DP】121.est Time to Buy and Sell Stock
class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ l = l原创 2018-05-20 17:45:25 · 210 阅读 · 0 评论 -
【剑指offer】数据流中的中位数
https://www.nowcoder.com/practice/9be0172896bd43948f8a32fb954e1be1?tpId=13&tqId=11216&tPage=4&rp=4&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking题意:每次输入一个数字,...原创 2019-07-23 15:10:44 · 126 阅读 · 0 评论 -
【剑指offer】数字在排序数组中出现的次数
查找一个数组中的某个数字的个数正常解法是:二分位置找前后端点,然后相减眼前一亮的解法,并且不容易面试手写出错的解法如下:二分查找k+0.5 和 k-0.5的位置,然后位置相减#include <bits/stdc++.h>using namespace std;class Solution {public: int GetNumberOfK(vector<i...转载 2019-03-01 13:44:26 · 152 阅读 · 0 评论 -
【剑指offer】把数组排成最小值
题目链接题意:数组中的数字拼接为最小数值比如:2,3,321,32,323拼接结果为:2321323233个人用的很麻烦的,纯粹手动实现算法,现在有更漂亮的代码!我的思路是:初始化:记住每个数值的长度,将所有数字都生成相同长度的数值,循环式生成,比如上例,2生成222,3生成333,,32生成323,即拼到最长数值长度(3),规则为循环式生成!排序:然后将生成的所有数字排序,为了排序...原创 2019-03-13 20:51:18 · 167 阅读 · 0 评论 -
【剑指offer】约瑟夫环
n个小朋友们围成一个大圈,编号0…n-1随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱歌,并且不再回到圈中;从刚出列的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,求最后一个小朋友的编号。举例看规律n = 6, m = 3出列剩下第一轮20,1, ,3,4,5第二轮50,1, ,3...原创 2019-05-30 12:38:18 · 333 阅读 · 0 评论 -
【leetcode】最近公共祖先
1、二叉搜索树的最近公共祖先https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/排序的,如果root大小在p,q之间,说明root就是祖先。如果root大于p,q,说明最近公共祖先在root左子树上;如果root小于p,q,说明最近公共祖先在root右子树上。class Solut...原创 2019-10-26 19:39:04 · 325 阅读 · 0 评论 -
【leetcode】最长递增子序列
定义一个数组 dpdpdp 存储最长递增子序列的长度,dp[n]dp[n]dp[n]表示以 SnS_nSn 结尾的序列的最长递增子序列长度。可以使用二分查找将时间复杂度降低为 O(NlogN)O(NlogN)O(NlogN)。dp[n]=max(1,dp[i]+1)dp[n] = max(1,dp[i] + 1)dp[n]=max(1,dp[i]+1) Si<SnS_i &...原创 2019-09-07 16:35:36 · 238 阅读 · 0 评论 -
【leetcode】213、环形抢劫
这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。求不报警的情况下的,最大可偷到的钱的数目。和198不同的是,198不是环形。所以1和n两家只能偷盗一家。因此可以向198转化,转化为①、从1开始偷,偷到n-1为止;②、从2开始偷,偷到n为止。比较两者中的最大值。cl...原创 2019-04-24 14:31:21 · 352 阅读 · 0 评论 -
【leetcode】最长公共子序列
最长公共子序列可延生出两个题目输入:[0,1,1,1,1] [1,0,1,0,1]输出:最长连续公共子序列为2,[0,1]最长公共子序列(可不连续)为3,[1,1,1]最长连续公共子序列leetcode:https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/dp[i][j]dp[i]...原创 2019-04-25 15:55:27 · 821 阅读 · 0 评论 -
斐波那契数列求解O(logn)
预备矩阵幂运算比如计算矩阵a的4次方,是通过b=a∗a,c=b∗bb = a * a,c = b * bb=a∗a,c=b∗b 得到的答案c,计算了n/2次。https://leetcode-cn.com/problems/climbing-stairs/f[n]=f[n−1]+f[n−2]=f[n−2]+f[n−3]+f[n−3]+f[n−4]=f[n−3]+f[n−4]+f[n−4]...原创 2019-04-25 17:52:31 · 725 阅读 · 0 评论 -
[leetcode---回溯]单词搜索
https://leetcode-cn.com/problems/word-search/单词搜索,真的是入门级的dfs了,因为想剪枝,导致bug改不过…还是最low的方法过的,嘤嘤嘤怎么肥事…class Solution {public: bool dfs(vector<vector<char>>& board, string word,...原创 2019-05-24 19:07:06 · 219 阅读 · 0 评论 -
[leetcode---双指针]盛最多水的容器
https://leetcode-cn.com/problems/container-with-most-water/数组为 [1,8,6,2,5,4,8,3,7] ,答案为49'''36ms-------O(n)'''''''''class Solution {public: int maxArea(vector<int>& height) { ...原创 2019-05-24 11:41:16 · 192 阅读 · 0 评论 -
[leetcode]最佳观光组合
可以优化时间和空间,酱婶儿写只是思路更清晰一些~class Solution: def maxScoreSightseeingPair(self, A: List[int]) -> int: n = len(A) ID = [i for i in range(n)] B = [A[i] - ID[i] for i in range...原创 2019-06-26 17:54:42 · 351 阅读 · 0 评论 -
[leetcode-135-贪心]分发糖果--不太懂
标签为难度的贪心算法之前看到这种题目,会划分到动态规划~class Solution {public: int candy(vector<int>& ratings) { vector<int> v(ratings.size(), 1); for (int i = 1; i < ratings.size(); ++...原创 2019-06-26 19:25:13 · 218 阅读 · 0 评论 -
[leetcode---bfs] 课程表-拓扑排序
输入3[[1,0],[2,1],[0,2]]结果为:false因为组成了一个环,0可修的前提有1,1可修的前提有2,2可修的前提有0,所以无法拓扑排序思路为 BFS1、queue保存所有起点(入度为0的点)2、保存每个点的所有后继点3、从起点开始,每次删除一个,入度减1,入度为0,说明这个点可以做为新的起点class Solution: def canFinish(...原创 2019-06-27 22:06:15 · 289 阅读 · 0 评论 -
[leetcode---dfs]电话号码的字母组合
一是第一次熟悉python的类的写法二是这个有好多循环,有点绕class Solution: def letterCombinations_sub(self, num:list, dig:list, p:list,cur:str, n:int)-> List[str]: if(n < len(num) - 1): fo...原创 2019-06-27 22:41:01 · 189 阅读 · 0 评论 -
[leetcode]排序数组上找元素首末位置
先找到左边界,然后在 [左边界,末尾] 找出右边界class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: l = 0 r = len(nums) if(r == 0): return [-1,-1] ...原创 2019-06-28 13:59:17 · 245 阅读 · 0 评论 -
[leetcode]二叉排序树找第K小值
中序遍历,就是顺序数列,直接取下标熟悉一下python的类的操作,啥都加self.树的空节点采用的None,而不是NULLclass Solution: def __init__(self): self.p = [] def mid_tree(self, root: TreeNode): if(root is None): ...原创 2019-06-28 14:31:26 · 496 阅读 · 0 评论 -
[leetcode]翻转图像
旋转90度图像,先转置,然后翻转class Solution: def rotate(self, matrix: List[List[int]]) -> None: n = len(matrix) for i in range(n): for j in range(i, n): ...原创 2019-06-28 19:15:39 · 178 阅读 · 0 评论 -
[leetcode]除自身以外的乘积
输入1,2,3,4输出24,12,8,6要求:不能用除法思路:从左到右扫,从右到左扫描两次,累乘从左到右表示:从 0 到 i 结尾的乘积为p[i]从右到左表示:从 i 到 n-1 结尾的乘积q[i]在 i 处,但是没有 i 的乘积结果就为p[i-1] * q[i+1]class Solution: def productExceptSelf(self, nums...原创 2019-06-28 19:44:05 · 158 阅读 · 0 评论 -
[leetcode]奇偶链表
是一个联系链表的好题目本地操作,时常迷糊class Solution: def oddEvenList(self, head: ListNode) -> ListNode: if(head is None or head.next is None): return head o = head p = head...原创 2019-06-28 20:48:17 · 188 阅读 · 0 评论 -
[赛码-字节跳动]dfs
字典序列,但是仅仅通过80%的样例#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <algorithm>using namespace std;#define ll long longclass Solution...原创 2019-07-13 16:47:42 · 189 阅读 · 0 评论 -
[leetcode]130. Surrounded Regions-200. Number of Islands-695. Max Area of Island-举一反三
dfs实现class Solution: def numIslands_sub(self, x:int, y:int): if(x < 0 or x >= self.n or y < 0 or y >= self.m or self.grid[x][y] == "0"): return ...原创 2019-06-29 21:01:48 · 155 阅读 · 0 评论 -
[leetcode---dp]单词拆分
dp[i]dp[i]dp[i]表示i结尾的字符串是否可以拆分。s[0,ed]s[0,ed]s[0,ed]在字典中,略过不在,那么dp[ed−length]dp[ed-length]dp[ed−length]为真 + s[ed−length+1:ed]s[ed-length+1:ed]s[ed−length+1:ed]在字典中可拆, 则dp[ed]dp[ed]dp[ed]为真class S...原创 2019-06-30 18:34:00 · 464 阅读 · 0 评论 -
[leetcode]随机返回K个未知链表长度的节点值
原理为蓄水池抽样:一个未知大小的数据流,随机返回k个数据,每个样本被选中的概率是相同的。所以可以直接读入的时候,随机返回。证明呢?数学归纳法假设前NNN条数据,返回KKK条,每条被返回的概率相同,都是KN\frac{K}{N}NK。那么N+1条数据返回K条的概率,用KN+1\frac{K}{N+1}N+1K的概率去选新增的第K+1条:1、选中了新增的这一个,前N条中有一条被替换:K...原创 2019-07-15 16:12:14 · 205 阅读 · 0 评论 -
[leetcode]找出没有出现过的数字--时间复杂度
要求O(n)的时间复杂度,O(1)的空间复杂度set的in操作,O(1)list的in操作,O(n)如果用list的in判断,那么则会超时。828msclass Solution(object): def findDisappearedNumbers(self, nums): t = len(nums) nums = set(nums) ...原创 2019-07-23 17:30:07 · 282 阅读 · 0 评论 -
[leetcode]132模式---未解决
给定一个整数序列:a1,a2,...,ana_1, a_2, ..., a_na1,a2,...,an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai<ak<aja_i < a_k < a_jai<ak<aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列...原创 2019-07-23 23:10:45 · 266 阅读 · 0 评论 -
【LeetCode】最长匹配括号字符串
最长括号匹配长度。如果是 “ 是否 “ 的话,题目是easy,一旦是找最长,那就是hard难度了。栈记录当前的(位置“()((())”关键是在断开的位置,其实也是()之后,栈已经为空,之后可能是全新的开始((),也可能是并列的开始()。栈中的记录为:看代码下方class Solution: def longestValidParentheses(self, s: str...原创 2019-09-27 16:34:30 · 428 阅读 · 0 评论 -
[leetcode]线段树-区间和-树状数组-动态数组
题目链接:https://leetcode-cn.com/problems/range-sum-query-mutable/、动态更改数组内容并在O(logn)时间内更改动态数组,返回区间[l, r]的数组的和。首先初始化一颗二叉树树状数组,对于数组实现,如果索引 i 处的元素不是一个叶节点,那么其左子节点和右子节点分别存储在索引为 2 * i 和 2 * i + 1 的元素处。用数组...原创 2019-10-06 17:43:44 · 449 阅读 · 0 评论 -
[leetcode]逆序对-链表排序-有序合并-归并排序
排序链表:https://leetcode-cn.com/problems/sort-list/求逆序数:原创 2019-10-07 22:00:41 · 247 阅读 · 0 评论