自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 【Leetcode】220. Contains Duplicate III 存在重复元素 III

解法本题的关键其实是滑动窗口,需要判断nums[i]前长度为k的窗口里有没有[nums[i]-1,nums[i]+t]范围内的数要注意k和t都有可能是负数……神坑解法一:离散化+BIT我自己用的比较naive的BIT来做的,非常不美= =class Solution(object): def containsNearbyAlmostDuplicate(self, nums, k...

2019-01-31 18:24:15 375

原创 【Leetcode】466. Count The Repetitions 统计重复个数

解法这个题目首先要转化成S1里总共有多少个s2,然后再整除n2就是M的值。基于官方解答的思想但是不做法不太一样中心思想是循环!就跟判断循环小数似的我们需要找到一个对齐方式,然后判断某个模式是否循环。比如说,对于官解例子里的s1="abaacdbac"和s2="adcbd"。官解找的对齐模式是 遍历到s1的第一个字母时,s2的哪个下标之前的字母已经完成,于是我们有:abaacdbac...

2019-01-30 11:55:24 1671

原创 【Leetcode】279. Perfect Squares 完全平方数

解法解法一:DP在不知道数学原理的情况下可以用dp,就是个多重背包问题的变体物品价值为1,重量分别为1,4,9,16,……背包容量为n代码和518. Coin Change 2类似class Solution(object): def numSquares(self, n): """ :type n: int :rtype: i...

2019-01-28 22:44:39 160

原创 【Leetcode】969. Pancake Sorting 煎饼排序

解法解法一:BIT当前k个数已经有序时,假设前k个数里有i个比第k+1个数大,我们可以:[1:k-i][k-i+1:k][k+1]翻转全部->[k+1][k:k-i+1][k-i:1]翻转前i+1个数->[k-i+1:k][k+1][k-i:1翻转前i个数->[k:k-i+1][k+1][k-i:1]翻转全部->[1:k-i][k+1][k-i+1:k]...

2019-01-28 21:03:55 277

原创 【Leetcode】30. Substring with Concatenation of All Words 串联所有单词的子串

解法关键在于所有的单词长度都相同最简单的方法就是依次判断每个下标i符不符合条件class Solution(object): def findSubstring(self, s, words): """ :type s: str :type words: List[str] :rtype: List[int] ...

2019-01-28 20:25:04 219

原创 【Leetcode】214. Shortest Palindrome 最短回文串

Given a string s, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find by performing this transformation.Example 1:...

2019-01-28 17:37:16 177

原创 【Leetcode】458. Poor Pigs 可怜的小猪

解法解题关键在于:每次可以把多个桶里的水混在一起喂给猪p分钟内只要能喂就行,例如15分钟起效的话,60min可以喂5次假设可以喂t次,那么把桶编号为0~t-1,按照t进制的规律来喂猪,假设t-1有l位,比如105化成5进制是410,所以从0到410,第0位可以从0取到4,第二位从0取到4,第三位从0取到4。我们用3只猪:第一只对应第0位,所以它被喂下编号的第0位是0的桶的混合,...

2019-01-28 13:58:05 227

原创 【Leetcode】782. Transform to Chessboard 变为棋盘

解法参考:https://blog.csdn.net/u014688145/article/details/79312830https://blog.csdn.net/magicbean2/article/details/79722329这道题需要利用特殊性来加快速度,首先根据题目要求我们可以很容易了解到最后转换的结果是什么样子的,因为只要把[0][0]设置为0或者1,后面的位置的值都...

2019-01-28 13:25:59 723

原创 【Leetcode】964. Least Operators to Express Number 表示数字的最少运算符

Given a single positive integer x, we will write an expression of the form x (op1) x (op2) x (op3) x ...where each operator op1, op2, etc. is either addition, subtraction, multiplication, or division ...

2019-01-24 16:20:43 1139

原创 【Leetcode】672. Bulb Switcher II 灯泡开关 Ⅱ

There is a room with n lights which are turned on initially and 4 buttons on the wall. After performing exactly m unknown operations towards buttons, you need to return how many different kinds of sta...

2019-01-24 00:32:22 759

原创 【Leetcode】611. Valid Triangle Number 有效三角形的个数

Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle.Example 1:...

2019-01-23 19:49:10 321

原创 【Leetcode】45. Jump Game II 跳跃游戏 II

Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Your goal is to r...

2019-01-23 18:58:41 88

原创 【Leetcode】137. Single Number II 只出现一次的数字 II

Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.Note:Your algorithm should have a linear runtime complexity. C...

2019-01-23 17:11:22 113

原创 【Leetcode】480. Sliding Window Median 滑动窗口中位数

Median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value. So the median is the mean of the two middle value.Examples:[2,3,4] , the median is 3...

2019-01-23 14:43:31 516

原创 【Leetcode】501. Find Mode in Binary Search Tree 二叉搜索树中的众数

Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred element) in the given BST.Assume a BST is defined as follows:The left subtree of a node contains ...

2019-01-22 21:47:46 145

原创 【Leetcode】761. Special Binary String 特殊的二进制序列

Special binary strings are binary strings with the following two properties:The number of 0’s is equal to the number of 1’s.Every prefix of the binary string has at least as many 1’s as 0’s.Given a...

2019-01-20 22:57:56 967 3

原创 85. Maximal Rectangle

Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing only 1’s and return its area.Example:Input:[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,...

2019-01-20 18:01:13 232

原创 84. Largest Rectangle in Histogram

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10解法最优解要么是高的,要么是矮的但是宽的...

2019-01-20 16:52:52 135

原创 518. Coin Change 2

解法这个有意思,01背包的省空间方法需要从大到小遍历容量而这个与一个物品可以取无数次的背包相似的问题,恰恰是正好要从小到大遍历因为容量较小的[j]会先被访问到,假设它只能装一个coins[i],那么更新完毕之后f[j]的种类数就由两部分组成:(1)只使用前i-1种硬币(2)使用一个i硬币而f[j+coins[i]]将会在后面被遍历到,它未处理之前只包含(1)只使用前i-1种硬币,加上f[j...

2019-01-18 21:36:37 287

原创 829. Consecutive Numbers Sum

解法解法一:判断每个长度是否合法google了一下,大家都用的这种方法,假设某段连续数组起始为aaa,长度为lll,那么想要加起来为n,则有n=(2a+l−1)l2n=\frac{(2a+l-1)l}{2}n=2(2a+l−1)l​首先我们可以判断出l的范围,由于a是正整数,所以能算出来:1≤l≤⌊2n+14−12⌋1\le l\le\lfloor\sqrt{2n+\frac{1}{4}}...

2019-01-16 19:06:18 403 1

原创 378. Kth Smallest Element in a Sorted Matrix

解法我就知道这个有特殊性质的矩阵的解法都很巧妙解法一:拿衣服堆就是求第k大的经典用法,用一个长度为k的最大堆不写了解法二:堆·改先把最小的元素入堆,然后每次pop出一个元素。如果这个元素左边还有元素,把它左边的入堆如果这个元素是第一个,就把它下面的也入堆class Solution(object): def kthSmallest(self, matrix, k):...

2019-01-16 16:06:10 68

原创 764. Largest Plus Sign

解法动态规划,找最大的加号,我们可以把每个为1的点当成加号的中心,它向上下左右四个方向分别会伸出连续为1的长度不同的手臂,最短的长臂长度就是以它为中心的加号的长度比较naive的方法是需要5个矩阵:class Solution(object): def orderOfLargestPlusSign(self, N, mines): """ :type ...

2019-01-16 14:43:07 161

原创 516. Longest Palindromic Subsequence

解法解法一:转化为最长公共子序列就是s和s翻转的最长公共子序列,与最长回文子串不同的是,最长回文子序列不存在特殊情况,只要是公共子序列就是回文子序列的一部分由于只用到了前后两行,可以优化空间class Solution(object): def longestPalindromeSubseq(self, s): """ :type s: str ...

2019-01-15 20:23:13 187

原创 456. 132 Pattern

解法解法一:枚举最简单粗暴的枚举是需要枚举i,j,k,但是有没有方法可以减少一维呢?答案是可以的,i只要比j小就可以了,为了方便我们只要选小于j里使得nums[i]最小的那个就行了class Solution(object): def find132pattern(self, nums): """ :type nums: List[int] ...

2019-01-15 17:58:22 126

原创 973. K Closest Points to Origin

解法常规解法:排序、堆就不说了记录一下分治每个子问题是,把子数组[i:j]里最小的前k个挑出来放到前k个位置上首先我们随机选一个点,用快排的方法,把小于它的都放到它左边,大于它的都放到它右边假设最后这个点的位置是t那么如果[i:t]已经有k个数了,那么问题转化成取[i:t]的前k个如果[i:t]还不够k个,那么数组[i:t]里的是必须取的,剩下的另一半数组里需要取剩下的前k-(t-i...

2019-01-13 12:38:42 477

原创 895. Maximum Frequency Stack

解法一个字典freq记录每个数字的频率一个字典group记录每个频率的栈,那么假设x的频率为i,那么也就是说总共存在i个x,每个x代表着不同频率:代表频率为1的那个x,代表频率为2的第二个x,……,代表频率i的那第i个x。还有一个常数记录最大的频率maxfreq每次pop的时候从group[maxfreq]的栈里pop一个元素from collections import default...

2019-01-12 22:42:58 254

原创 805. Split Array With Same Average

解法解法一:转化成是否存在k个数使得和为target很明显,B和C那相等的均值一定是A的均值所以给定B的长度l,我们可以计算出B的总和应该是sum(A)∗ln\frac{sum(A)*l}{n}nsum(A)∗l​所以问题就转化成数组里是不是有l个数的和加起来刚好等于这个值,dfs求解但是会超时,需要剪下枝:如果所有候选的数加起来也组不够target,pass如果前一个数为a,它失...

2019-01-11 17:39:32 102

原创 162. Find Peak Element

解法解法一:线性搜索由于相邻的元素一定不相等,从左往右起第一个使得nums[i]>nums[i+1]的就是峰值解法二:二分查找把数组想像成一个个山丘,左边是上坡,右边是下坡如果mid比它后面的元素大,说明mid在下坡,顶点一定在mid左边如果mid比它后面的元素小,说明mid在上坡,顶点一定在mid右边class Solution(object): def find...

2019-01-11 14:51:20 76

原创 648. Replace Words

解法其实暴力也过了,行吧,学习一下如何优雅地使用python解法一:前缀HASH因为dict数组长1000,而root只长100,每次枚举单词长度小于100的前缀,看它是不是在dict里class Solution(object): def replaceWords(self, dict, sentence): """ :type dict: Lis...

2019-01-10 19:13:33 258

原创 923. 3Sum With Multiplicity

解法一题多解解法一:DP我自己的辣鸡解法,巨慢,但是居然没有超时23333就是分别算用1、2、3个数得到和为x有多少种可能优点可能只有短了吧class Solution(object): def threeSumMulti(self, A, target): """ :type A: List[int] :type target:...

2019-01-10 17:11:03 156

原创 421. Maximum XOR of Two Numbers in an Array

解法用01字典树解,只需要遍历2次第一次构建01字典树第二次遍历每个数字num,对于num对大的异或值是,从左边最高位开始:如果num的这一位为1,那么优先选择这一位为0的,其次才选为1的反之亦然从字典树里就能找到最大的异或值了再从每个数字的异或值里找最大的那个class TrieNode(object): def __init__(self): sel...

2019-01-10 15:27:10 111

原创 5. Longest Palindromic Substring

解法记一下一题多解,求最长回文子串解法一:最长公共子串如果想用S和S[::-1]的最长公共子串来求最长回文子串,会有一个问题就是:当S=abcdfcba和S[::-1]=abcfdcba时,最长的公共子串是abc,它显然不是回文。解决方法是在dp的时候判断一下公共子串的下标是否对应但是这个方法效率不高,反正我超时了class Solution(object): def long...

2019-01-10 14:54:35 535

原创 23. Merge k Sorted Lists

解法一种解法当然很简单,记录一下官解里的众多解法……解法一:暴力遍历找到所有的节点排序生成新链表解法二:比较队头每次取lists里值最小那个,取了之后用它的后继节点替补上去class Solution(object): def mergeKLists(self, lists): """ :type lists: List[ListNode...

2019-01-10 01:28:38 60

原创 659. Split Array into Consecutive Subsequences

解法一看到这个题还想吐槽这不是我斗地主的时候需要思考的事情吗……解法一:直接做(?)我自己的解法比较耗空间,对于每个数字,维护一个二元组(cnt,start),前者是有多少个这个数字,后者是有多少个序列以这个数字开始。假设当前遍历到的数字是x,前一个数字是prev:如果prev+1!=x,那么要判断prev是不是可以当成前面的序列的结尾了,具体做法是判断有没有以prev和prev-1开...

2019-01-09 20:51:03 168

原创 488. Zuma Game

解法测试条件很小,好像直接深搜就可以了class Solution(object): def findMinStep(self, board, hand): """ :type board: str :type hand: str :rtype: int """ from collectio...

2019-01-06 23:25:07 108

原创 913. Cat and Mouse

解法一开始想用alpha-beta啥的,但是超时了mouse, cat, player代表游戏的每一个状态,把游戏运行过程想像成这些状态连成的有向图。其中有的状态的马上就被判断出结果:(0,cat,player):这种情况一定是老鼠赢,着色为MOUSE(i,i,player):这种情况一定是猫赢,着色为CAT还有些状态能被间接着色:(mouse, cat, player)的后继...

2019-01-06 17:28:58 206

原创 478. Generate Random Point in a Circle

解法解法一:基于几何概型随机生成一个在外接正方形里的点,如果不在圆里就重新生成class Solution(object): def __init__(self, radius, x_center, y_center): """ :type radius: float :type x_center: float :ty...

2019-01-03 18:50:43 130

原创 960. Delete Columns to Make Sorted III

解法其实这道题是LIS的变种,每一列算一个元素,求最长不降子序列,然后再用总长度一减就是需要删除的列数难点在于,元素之间的关系不仅有<=和>,还有可能是无关,即<=和>都不满足需要想清楚这个LIS有两种方法,所以这道题也有两种方法O(n^2)的DP状态转移方程为:dp[i]=max(dp[i],dp[j]+1),∀A[j]<=A[i]dp[i] =...

2019-01-03 11:53:07 174

原创 956. Tallest Billboard

解法参考:https://zhanghuimeng.github.io/post/leetcode-956-tallest-billboard/#fn1官方解答问题本质给每个元素加上(0,-1,1)的系数,使得和为0,令系数为1的元素之和最大解法一:官解DP[Python2超时Orz]把这个问题看成一个扩展的0-1背包,每个物品不但可以放进背包里,还可以从背包里减去每个物品的价值...

2019-01-03 00:46:31 399

原创 420. Strong Password Checker

解法参考这里主要是贪心= =长度在6~20之间,通过插入和删除操作解决同时有大写小写和数字:通过插入、替换解决不能连续重复大于等于3次:通过插入、删除和替换解决贪心的思路是,优先找能同时解决多个条件的操作。长度小于6时:假设缺a个字符,并且缺k种字符,且同一字符连续重复次数在3~5次。首先,肯定要先添加min(a,k)个字符。如果长度够6了(min(a,k)=a...

2019-01-02 20:03:03 175

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除