Leetcode
求个offer救救俺
这个作者很懒,什么都没留下…
展开
-
算法学习之路
一、单调队列1、滑动窗口的最大值给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组[2, 3, 4, 2, 6, 2, 5, 1]及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为[4, 4, 6, 6, 6, 5]。注意:数据保证k大于0,且k小于等于数组长度。样例输入:[2, 3, 4, 2, 6, 2, 5, 1] , k...原创 2020-04-18 00:05:15 · 496 阅读 · 0 评论 -
剑指offer面试---二叉树系列
1、验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: trueclass Solution: def isValidBST(self, ...原创 2020-04-16 20:02:27 · 522 阅读 · 0 评论 -
leetcode 1143. 最长公共子序列 面试题
给定两个字符串text1 和text2,返回这两个字符串的最长公共子序列。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符...原创 2020-04-15 17:49:17 · 170 阅读 · 0 评论 -
动态规划之买卖股票问题
买卖股票问题比较多,基本问题类型如下:随着k取值的不同,以及手续费,冷冻期的问题,可能会有许多变形,我将其总结为贪心算法和动态规划,当k=1或k无限制时,即只能买卖一次或者无限制时,可以用贪心算法。1、给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。class...原创 2020-04-15 13:06:43 · 445 阅读 · 0 评论 -
435.Leetcode 贪心算法之区间调度问题
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。class Solution: def era...原创 2020-04-15 10:20:14 · 531 阅读 · 0 评论 -
动态规划之博弈问题
你和你的朋友⾯前有⼀排⽯头堆, ⽤⼀个数组 piles 表⽰, piles[i] 表⽰第 i堆⽯⼦有多少个。 你们轮流拿⽯头, ⼀次拿⼀堆, 但是只能拿⾛最左边或者最右边的⽯头堆。 所有⽯头被拿完后, 谁拥有的⽯头多, 谁获胜。⽯头的堆数可以是任意正整数, ⽯头的总数也可以是任意正整数, 这样就能打破先⼿必胜的局⾯了。 ⽐如有三堆⽯头 piles = [1, 100, 3] , 先⼿不管拿 ...原创 2020-04-15 09:48:38 · 151 阅读 · 0 评论 -
Leetcode 300. 最长上升子序列python版本
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。class Solution: def lengthOfLIS(se...原创 2020-04-14 16:28:48 · 114 阅读 · 0 评论