Skip to content

pzmrzy/LeetCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

在dictionary里找有没有

对好位置加,注意最后一个进位

用两个指针,记录前后位置,用字典存现在已经有的字符,重了就删,更新结果

把问题转换成找两个数组的第几个数,找的时候二分删一个数组的一半

选一个位置为中点向两边拓展,可以跳掉连续重复的字符

用字典存每个字符应该出现在第几行,然后顺着输出

先判断正负,然后取mod加到list里输出,主要和2**32比

先判断正负,不是0-9的break,用ord转成数

转成字符串,到n/2长度头尾比

头尾两个指针扫,两个的距离乘矮的是当前能装的最多的,下一次矮的往里移 ### 12. Integer to Roman |python| 先对应好,从大到小,然后用公式

先对应好,从左到右,小的减,大的加

先两个找,找好了跟第三个比

先排序,确定一个,然后两个指针扫

先排序,确定一个,然后两个指针扫,再维护一个dif存最小的差

对应好之后BFS

先排序,确定两个,两个指针扫后两个

两个指针先让一个走n个,然后一起走,第一个到结尾第二个就是第倒数第n个

用栈,左括号进,又括号弹,然后看对称不对称

用优先队列,key就是每个链表的第一个元素,pop完,删一个再放回去

用队列存当前状态第几个左括号和第几个右括号,bfs

所有链表的头存在优先队列里,每次合并pop出来一个,并更新这个头位它的next

三个指针,第一个第二个换,第三个迭代

两个指针lr找范围,找满k个或者列表结束换,如果不满返回结果

两个指针,前一个指向不重复的,如果有新的不重复的就拷贝的前面

头尾两个指针,如果要删就换

暴力求,或者kmp

减除数,结果和除数<<1,直到被除数小,注意0,无穷和正负的处理

找到第一个第一个比右边小的,先交换然后后面排序,注意最大的直接排序

用栈存左括号位置,遇到右括号pop,存额外右括号的位置,最后遍历一遍栈,找相邻元素距离最大的位结果

二分,找有序的一边

二分查找开始和结束位置

二分

直接按要求检查

先存所有空格位置,暴力递归

按照规定读自己

BFS

BFS且记录位置

删掉0和大于n的,建图。。

正反扫两边,记录最左最右的最大值,每个位置是左边最高右边最高中小的减去高度

对每两位的乘积存到对应位置上,再做一遍进位

dp,根据每一位进行状态转移

贪心,记录当前可以调到的最远的距离,当当前点已经是最远的时候,开始跳下一次

BFS DFS

初始为空,每次插入一个数,如果要查的数和这个位置的数相同则break来去重

对应的四个点转,注意奇数时中间那列

对每个字符串排序

算开方的,递归

DFS,用一维数组存位置就够了

DFS,同上

求部分和,顺着找到目前位置最大的和最小的,差是结果,min-1

盲人探路

如果能跳到n一定能到n-1倒着跳

按开始从小到大排序,如果有重合则更新当前区间结束点,否则在结果中增加当前区间

把新的加到一起排序,然后顺序合并

split之后返回最后一个长度

盲人探路

先求出来阶乘,然后挨个除,把对应的加进去

找到尾以及链表长度,找到要转的位置,尾指向头成环,新的头为尾的下一个,尾下一个为空,切断环

dp,第一行1,每个格等于上面加左边

dp,先初始化第一行第一列,只要出现1后面都是0,中间的个如果是1是0,不然是左、上的和

dp,初始化第一行,每个上面等于或左边最小的加自己

慢慢写正则

先翻转顺着加一,再翻转

先补齐,对位加,注意最后的进位

好麻烦,各种情况想清楚

二分

dp,递推

栈,..弹栈,注意弹之前先判断size

dp,两个字符相等,直接等于前一个,否则是(前一个,删第一个,删第二个)中最小的+1

每行的第一个做标记,然后再弄两个记第一行,最后都扫一遍

相当于变成一维二分

三个指针,0和2换,0前面加一,2后面减一

先统计,然后两个指针扫

dfs记录位置和个数

bfs

dfs回朔

和I类似,如果比当前前两个数大,就拷贝过来

。。。on比log的快

dummy头指针,当前指针走到重复的最后一个,如果前一个指针的下个为当前指针则证明没重复,否则更新前一个指针跳掉当前指针

等于next就删

用栈存当前高度,如果比下一个高就pop,并算新的面积

遍历一遍分成两个链表,最后再合并起来

拿每个位置当根节点,递归

一个数组一个指针,都从尾部开始,再一个指针放最后面,每次比大的放最后,最后把剩下的加进去

弄了0和1,剩下的就reverse再在前面加

相当于1,然后去重。。。正常应该是记录位置

dp注意整10 的情况,以及多个0

用到四个指针dummy,pre,start,then,先找到开始换的节点,把每个换到pre的下一个

记录位置dfs

dfs左根右

枚举位置为根节点,递归求所有左右子树,再组合起来

dp,每多一个数,结果为前面所有分着乘

递归检查左右子树,要传最大最小界

中序遍历,找到两个顺序反的结点,交换

递归左右子树

递归比左右子树,注意none

根为0,用字典存每层有哪个节点

中序遍历树,字典存节点的层,根据奇偶正反序输出

dfs左右子树

不能传数组,算下标

同上

和1一样,就输出的时候反着

中间的当根,两边递归

快慢指针找中点,中点为根,递归左右子树

递归,左右高度相等或者差1,且左右子树平衡

bfs,找到叶节点结束

bfs,搜到所有叶节点

bfs时要记录路径

pre记录下一行的开始,用next指针遍历一行

把上一行投影下来补0,从左到右等于自己加右边的

一样,就返回一行

dp倒着向上走,每次选小的加

贪心扫一遍

贪心,相当于每天都能买卖,只要赚就卖

dp,找到两次买卖的时间

左边最大,右边最大,和经过root+左边最大+右边最大,注意全负数的情况,返回只返回从自己出发最大的以及和0比

正则把没用的删了,再判断

神奇的建图方法,剩下就bfs

并查集

dfs,传当前的值

先把边界所有为o的加入队列,遍历一遍换成s,最后再把s换成o其他换成x ###131. Palindrome Partitioning dfs,存路径

存一个visit,dfs

如果总和大于cost一定有结果,从头模拟如果不行就从不行的节点当头

贪心,先正着给,再反着给

xor一遍

set求和乘3减num求和,再除2

用defaultdict存node

db拆不拆

用字典存分割的结果,dfs

一个slow一个fast,有环一定能重合

方法和1相同

根左右

左右根

字典存值,list存位置,每次写的时候都放到最后,满了删最前

用栈,注意6/-132 = 0, python = -1

先split,reverse,再join回去

先用0分开数组,对每个部分分别求,取最多偶数个负数的subarray

二分找最小的

直接min最快。。。

用list模拟

左子树位右子树,父节点位右孩子,

每次读,直到不够4个位置,为什么py不对

差不多py不行

两个指针记录两个字符最前面的位置

从两个指针的头开始,如果走到尾则换到另一个链表,直到两个指针相同,为交点

相等是不是差一个字母,不相等长度差1,差一个字母

扫一遍大于左右

相等跳过,差一加一,否则输出,注意单个的

split之后直接比

存每次除的余数,出现重复的时候结束结束循环,这个重复的余数为循环节开始的地方

确定一个二分第二个

mod26

count > n/2

用字典存,查的时候on

反过来

删了。。。

中序遍历放到数组里

贪心,写一个比较函数

如果是空格翻转,最后一起再翻转

把出现过的存在一个集合里,如果再次出现就加到结果里

切片

转二进制,zfill,翻转,再转回去

转二进制数

dp每个房间偷不偷

中序遍历,加一个level

dfs/bfs/并查集

死循环到1或者重复

dummy,等于就跳

筛法,或者后面好多hint

用dict,换线换一次看看是不是都行

每次tail向后一个

拓扑排序

字典树

拓扑排序

trie+dfs

环可以变成两次dp,偷不偷最后一个

每次找一个,大于小于的分治,注意shuffle

bfs,放位置和剩余的

用set,一个新数in set就true

字典存每个数都出现在哪,每个数判断一下距离

求交集然后减

后缀表达式,栈空进栈,优先级高进展,否则弹出到比自己低的,自己再进栈

数组模拟

先转子树,再交换孩子节点

比1简单 没括号

先加个-1,两个指针,有空了输出

count。。

中序遍历

除log之后是不是整数

数组模拟

考虑1出现在哪位,公式

快慢指针先走到中点,然后翻转一半比

先看会不会是根,不是往子树里找

如果根是其中一个子树或者空则返回,否则递归两个子树找lca,如果两边都不是空则为当前点,否则为非空子树的结果

遍历,等于就删

先正着扫,乘左边的,再反着扫乘右边的

双向队列,删除超出的,且保持第一个永远最大

右上角开始,向左下找

遍历字符串如果是运算符则拆成两边递归,将两边的结果组合,如果不包含运算符则返回数字

先排序,看看等不等

两个指针扫两个单词,每次更新结果,开始给-1

用字典存每个单词的位置,然后遍历

和一一样,注意只有两个指针不等才更新

找好对应的,扫一半+1

递归,奇数是向n-2的中间插一位的,偶数是向n-2的中间插两位的

用两个字母的差当key,然后分组

遍历的时候返回三个值,真:左边个数加右边个数+1,假:左右最大,以及自己的值

for一遍,虽然肯定要求不是这样的

排序完比

排序完用优先队列,新的进来如果比最小的有冲突就都加进去,max qsize是结果

dfs,存结果,当前的,和从几开始

dp,rgb三个变量,每次取和自己不一样颜色里小的加自己的费用

遍历的时候返回path

mod 9的余数

排序,确定一个扫另外两个

xor之后找最后一个1,然后分成两组xor,两组的结果就是

是不是n-1边,判断是不是连通的

不停除235之后看是不是1

统计一遍个数,是不是只有最多一个奇数

求和减一下

拓扑排序

遍历时候和全局结果比

放每个字符串的长度,用#分开

中序遍历,然后两边往里加

1到19先写好,写一个转1k以下的,然后多少b多少m多少k

记录每个citation有几篇文件,然后倒着扫

二分

dp,same和dif两个变量

因为就一个找到可能的那个人,在判断一遍是不是符合条件

二分调api

how to prove 4^k(8m+7)????

on找中位数算法,k largerst ,cpp好省事

先遍历了

dfs,注意处理00开头的情况

找到0删了,最后再加,或者直接换到后面

记录peek num

先中序遍历

从门开始bfs

slow fast建图

建好判断是不是unique的

模拟

对应pattern和单词,判断是不是冲突

用字典存模式,dfs回朔

mod4

顺着扫一遍所有可能的

借助前一个,用递归看看第一步是不是有一个能赢,

两个优先队列,记录大数和小数,每加一个新数根据当前长度向其中一个放

每一个维度的中间点,还用找中位数算法 ###297. Serialize and Deserialize Binary Tree |python| 前序遍历,#为None,空格分开

遍历的时候向下传当前的长度,每次先更新结果

模拟

最长递升子序列,log的dp

bfs

遍历每个点更新四个角,最后求面积

部分和

二维部分和

并查集

树状数组

二维树状数组或者用部分和也能过

dp,存前两天买或者卖的状态

做两次bfs,根在第一次bfs最深的那个店

dp,取一个扎,为乘积+左右两侧的

bfs,根为0,左减又加,输出key最小到最大

26位mask,二维for一遍 然后and是0就算,注意加一个0,没有符合条件的情况

sqrt

dfs,记录位置

枚举每个里面取的个数,得到能取到的最大的,再merge

因为按字典序,图存到优先队列里,然后dfs

bfs

和2一样

奇偶两个dummy,扫完了连起来

first second两个,小更新,找到第三个

找出现miss的数,如果有比他小的,就加这个数,否则乘2

存最小的两个,如果有新的比这两个大,则为真

考虑每连续六个,两种情况可能相交

如果抢,就dp下两层的,不抢就一层的,用负数表是是不是求过

2的n次方拓展

求深度的的和函数互相调

用栈存list和深度

log

拆3

直接reverse

两个指针前后找元音,然后交换

每次重算了。。

字典然后排序

模拟

取set求交

用字典统计个数,取小的

写好每个数能去哪个数 然后dfs

用heapq,add的时候加入一个长度为一的区间,get的时候合并区间

使用deque存蛇和食物` ###354. Russian Doll Envelopes |python| 按x[0],-x[x]排序,二分

各种字典

去重,排序,找到中点,用一半对应另一半

0,10,81是两位的,最后一个乘t-1是下一个的

用字典存时间

判断二次项正负,两个指针,找绝对值大的加

用字典存序列

dfs

互质就可以

dfs记录层数

二分

dp,只用判断最大的能不能整除

找到一个不是9的加,后面变0,全是9直接变0

左端点加,右断点减,最后统计

位运算,mask,b的每一位给a

先把0到9次方求了,然后每位算

优先队列存组合,找的时候j+1,到头再i+1

二分猜

贪心扫

dfs

优先队列

用字典

把数存到数组里,用字典存对应文字,在删除的时候,把最后一个数组最后一个元素移到该位置

xx sampling随机算法

字典统计一次

随机交换两个数

存当前的数,根据情况对当前的数 乘10,+1,/10+1

用字典扫一遍

用字典存层数,如果是包含点则是文件,更新当前长度,否决存下一层

两个字典比一下

每次找头在哪里

存四个最外围的点,然后比总面积是不是为四个点包围的面积

两个指针扫,相等下一个,不等找到相等的位置,如果不全 false

分类判断

用栈存,设多个状态

推和上一项的关系

往四的倍数走,注意最后3直接减除

xx采样

能除的建图 bfs

找到对应的数,在找到位置,对应的数每次减去 l(每次加一)乘count(每次乘10)

确定小时 遍历分钟

贪心,注意0

dfs,注意不能跳0步

dfs

负数+2的32次方

先按-x[0],x[1]排序,在p[1]插入p

判断是不是

统计多少个是偶数次

二分答案

去掉长度不一样的,然后利用前面的生成,然后从最短的开始找

先mod15在mod5和3

确定两个扫

冒泡三次

按位加

dp,能不能凑成一半,对每个数要或者不要

两边bfs,求交集

一个x上面或者左边是点

从最高位32位开始,每次结果左移一位,看对应位是1的,如果这些数有一个和1和当前结果xor是1,结果加1

两层for判断

找到每个数唯一的字母

用字典存每个字母出现的次数,对每个字符找到最左边的

trie,dfs

如果是空格状态为0字母为1,0的时候状态为1,结果+1

按开始排序,扫一遍和前面比

先排序,然后二分搜索

dfs是不是从自己开始

用一个字典存,遇到没用的字符跳

从后面开始,用栈

等差数列 [(sqrt(8n+1)-1)/2]

用数组自己作为hash存哪个数之前出现过,第一次出现的数将对应位置变成负的

建图,拓扑排序

先存到数组里加

枚举中间的点,算距其他所有点的距离存到字典里,距离相同的点组成结果

用数组的index做hash,出现过则变成负数

序列化用前序遍历空格分开,恢复时用deque,递归建树

如果比根大,向左找,否则向右,当找到时如果只要一个子树就返回,否则将根换成右子树的最小值,并删除该点

存到字典里按顺序输出

按横坐标排序,初始左右为正负无穷,对于不在范围里的气球,更新左右结果+1

数学,sum(num)-l乘min(num)

把两个数组合并成一个,转换成2sum

从小到大排序,从小的开始,如果能满足就给,不能就跳

三个指针扫

枚举pattern的长度,如果能整除就判断是不是

异或数1

找到中位数,和所有别的数求差

遍历地图,每个方块+4,有相邻的-1

正则表达式

dfs

dp,遍历每个数,数0和1,data(i,j)=max(data(i,j),data(i-#0,j-#1)+1)

对heater排序,再对house排序,遍历所有house看能否被覆盖到

找到第一个2的n次方大于n,用这个数-1与n异或

遍历32个位,每个数与对应位&,为该位为1的个数,也能得到0的数个数,相乘加到结果

确定上下界,遍历可能的结果判断

从短的序列开始拓展到n

先去掉-,然后按位加-

遍历一遍计数,遇到0清零

dp存差dp(j,j+1)=max(num(j+1)-dp(j,j+i-1),num(j)-dp(j+1,j+i))

用itertool生成所有组合并判断

对面积开方,从中间向两边扫

dp,结果存在dp(i, sum+1000),dp(i,j)=dp(i+1,j+num[i])+dp(i+1,j-num[i])

结果加 min(相邻两次攻击时间差,持续时间的)

用字典存对应结果,求的时候递归向后找

按 i+j,(j,i)[i^j&1](奇偶),val排序

先把键盘的行数存到字典里,挨个单词判断

遍历树,把值存到字典里

502. IPO

两个优先队列,一个captial从小到大,一个profit从大到小,贪心每次选取profit最大的,然后更新两个优先队列 ###503. Next Greater Element II |python| 用栈存,初始为倒序,从后开始遍历,如果栈顶小于当前的数pop直到没,当前的结果位栈顶对应的数 ###504. Base 7 |python| mod7 取余 ###506. Relative Ranks |python| 写好顺序GSB...,用把num排序再zip成字典,到num里取 ###507. Perfect Number |python|

###508. Most Frequent Subtree Sum |python| 后序遍历,值存到字典里,最后找字典里最多的 ###513. Find Bottom Left Tree Value |python| 前序遍历,遍历时记录层数 ###515. Find Largest Value in Each Tree Row |python| 遍历的时候把数存到对应列的字典里 ###516. Longest Palindromic Subsequence |python| dp, 记录ij 头尾,dp(i,j) = dp(i+1,j-1) if s[i]==s[j] else max(dp(i+1,j), dp(i, j-1)) ###517. Super Washing Machines|python| 求平均,把数组变成demand,然后从第一个开始向后转移,需要转移最多的为结果

###520. Detect Capital |python| isupper, islower, istitle ###521. Longest Uncommon Subsequence I |python| 相等为-1,不等为长者 ###524. Longest Word in Dictionary through Deleting |python| 对单词按长度排序,对每个单词用一个指针扫描进行判断 ###525. Contiguous Array |python| 记录01差,字典存差出现的位置 ###526. Beautiful Arrangement |python| dfs,如果符合则对下一个和当前的数进行交换 ###529. Minesweeper |python| bfs,如果是数填数,否则加入队 ###530. Minimum Absolute Difference in BST |python| 前序遍历的结果为从小到大的顺序,记录前一个值,求差 ###531. Lonely Pixel I |python| 开两数组用来存每行每列有多少个,最后再遍历一次,判断这个点对应行列是否为1 ###532. K-diff Pairs in an Array |python| 数存到字典里,遍历字典key看相差k的key是否存在 ###533. Lonely Pixel II |python| 和1类似,遍历的时候存把位置存到一个字典里,最后再遍历字典看行列是否为N ###535. Encode and Decode TinyURL |python| url存到字典里,key为自增的数 ###536. Construct Binary Tree from String |python| 找括号分两边子树,然后递归 ###537. Complex Number Multiplication |python|

###538. Convert BST to Greater Tree |python| 右根左遍历,记录和,加到root ###539. Minimum Time Difference |python| 先排序,再加一个最小时间加24h的时间,顺序减求最小 ###540. Single Element in a Sorted Array |python| 根据奇偶和前后是否相等进行二分 ###541. Reverse String II |python| flag记录是否反正 ###542. 01 Matrix 先从左上到右下扫一遍更新,再右下到左上扫一遍更新 ###543. Diameter of Binary Tree |python| dfs,深度为左右子树最大深度+1,更新结果 ###547. Friend Circles |python| 并查集 ###551. Student Attendance Record I |python| 根据规则记录状态 ###553. Optimal Division |python| 超过两个数结果为第一个数除以后面所有数的连除 ###554. Brick Wall |python| 用字典存对应位置的砖块个数, ###557. Reverse Words in a String III |python| split空格reverse再join ###560. Subarray Sum Equals K |python| 用字典记录部分和,结果加当前和与k的差的个数 ###561. Array Partition I |python| 先排序,隔位取,求和 ###563. Binary Tree Tilt |python| 后序遍历,结果加左右差,返回左右加root ###565. Array Nesting |python| 存一个visit数组初始false,每个数只能被visit一遍,遇到true的更新结果 ###566. Reshape the Matrix |python| 如果可以转,把数组拆成一维迭代器再拼 ###567. Permutation in String 先把s1存在字典里,遍历s2放到另外一个字典里比较 ###572. Subtree of Another Tree |python| 递归和两个子树比,比的时候也递归比 ###575. Distribute Candies |python| min(len(candies) / 2, len(set(candies))) ###576. Out of Boundary Paths 用两个数组迭代,如果出范围就加到结果里 ###581. Shortest Unsorted Continuous Subarray |python| 排序与没排序的比,找到第一个和最后一个不同的 ###582. Kill Process |python| 先建有向图,然后bfs ###583. Delete Operation for Two Strings |python| dp类似与edit distance ###591. Tag Validator 用正则,先替换掉cdata为t,然后替换tag为t,直到不能换为止,如果最后结果为t则是validate的 ###592. Fraction Addition and Subtraction |python| 拆出来所有数,按顺序加起来,最后约分 ###593. Valid Square |python| 两两算距离,四个短的相等,2个长的相等 ###594. Longest Harmonious Subsequence |python| 所有数存到counter里,对于每个数看下个数在不在,如果在更新结果 ###598. Range Addition II |python| 找到操作里最小的x和y,x乘y为结果 ###599. Minimum Index Sum of Two Lists |python| 两个列表存到字典里,值为index,把公共的index和存到字典里,最小的key为结果 ###605. Can Place Flowers |python| 贪心,能放就放 ###606. Construct String from Binary Tree |python| 递归,对左子树,如果左右子树都不存在返回空,对右子树,如果有为空,返回空 ###609. Find Duplicate File in System |python| 先拆开存到字典里,key为内容,value为路径,返回所有长度大于一的value ###611. Valid Triangle Number |python| 先排序,遍历最大边,两个指针找能够构成三角的范围 ###617. Merge Two Binary Trees |python| 递归merge ###621. Task Scheduler |python| 存到counter里,用最长的当分隔,得到最长长度,和总长度比 ###623. Add One Row to Tree |python| 递归加,d<=2时左子树1,右子树0 ###628. Maximum Product of Three Numbers |python| 排序,结果为前三个和后三个拼的最大值 ###630. Course Schedule III |python| 按结束时间排序,用优先队列从大到小,当前start小于end pop并更新start,最后剩下的长度为结果

用优先队列维护每一列的最小值,同时记录左右,当一个列结束返回结果 ###633. Sum of Square Numbers |python| 遍历0到sqrt(n) ###635. Design Log Storage System |python| put就append,取的时候根据gra遍历一遍判断 ###636. Exclusive Time of Functions |python| start压栈,end弹栈 ###637. Average of Levels in Binary Tree |python| 用字典存层,最后再算平均

###640. Solve the Equation |python| 正则找到所有的系数和常数项,除得结果 ###643. Maximum Average Subarray I |python| 前后两个指针求连续的和,最后再求平均 ###645. Set Mismatch |python| 求和,再找到重复项 ###646. Maximum Length of Pair Chain |python| 按y排序,扫一遍用y更新当前值,初始-inf ###647. Palindromic Substrings |python| 枚举中间点,向两边拓展 ###648. Replace Words |python| 字典存到集合里,对句子中的单词,从短到长匹配 ###649. Dota2 Senate 贪心,每次都ban掉下个对方,用两个队列存双方的位置,当a可以ban掉b的时候,把a+n加到queue中 ###650. 2 Keys Keyboard |python| dp,初始dp[i]=i,之后如果能整除,更新 ###652. Find Duplicate Subtrees |python| 前序遍历,并序列化成字符串,存到字典里,找所有出现过重复的 ###653. Two Sum IV - Input is a BST |python| bfs,遇到的数先检查对应的是否出现过,否则存到集合里 ###654. Maximum Binary Tree |python| 找到数组里的最大值做根,对两边递归 ###655. Print Binary Tree |python| 先求深度,根据深度初始化结果数组,递归填 ###657. Judge Route Circle |python| 只有做完能回到初始位置才可以 ###658. Find K Closest Elements |python| 二分找到中点,两个指针左右拓展 ###659. Split Array into Consecutive Subsequences |python| 字典key为末尾的数,value优先队列所有以该数结尾的长度,如果前一个存在则append最短的 ###660. Remove 9 |python| 换成九进制 ###661. Image Smoother|python| 模拟,找一周的点求平均 ###662. Maximum Width of Binary Tree|python| 用字典记录每层最左边和最右边的位置,对应pos 的两个子树的位置为 2pos 和 2pos+1 ###663. Equal Tree Partition|python| 向一个集合里加入所有树的和,如果二分之一整个树的和在这个集合里则可以分割 ###664. Strange Printer|python| dp,dp(i,j)为i到j的最小值,枚举分割中点,dp(i,j) = min(dp(i+1,j)+1, dp(i,k-1), dp(k+1,j)) ###665. Non-decreasing Array 从前后扫两遍,每次扫只能换一个数 ###666. Path Sum IV 先把树存到数组里,然后dfs遍历 ###667. Beautiful Arrangement II 加入k=4,先15243这样拍,剩下的顺序放 ###668. Kth largest Number in Multiplication Table

dfs, 小于L返回右子树,大于R返回左子树

根是最小的,找比根大最小的

只用考虑m,n<=2的情况,大于是8

n方的最长递增子序列,新建一个数组记录有多少方法

扫一遍,递增+1,否则清0

675.

建立字典时将每个单词拆成长度个项,做为key存在字典里,搜索的时候也拆成长度个去查找,拆是只把每一位换成下划线

Trie数,按路径更新差

lr记录当前最少和最多没匹配的左括号,r不能小于0,最后判断l是否为0

679. 24 Game

先正常检查,如果不匹配就左边+1或者右边-1,继续匹配,但标记是否记录过

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published