📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
楼主: mereflora
跳转到指定楼层
上一主题 下一主题
收起左侧

1月刷题打卡帖

🔗
 楼主| mereflora 2021-1-15 12:19:43 | 只看该作者
全局:
1.14
Find Duplicate Subtrees,后序遍历serialize subtree as string,用hashmap检查重复
Convert BST to Greater Tree,BST转累加树,用global sum
Construct Binary Tree from Preorder and Inorder Traversal,因为是二叉树,没说二叉搜索树,所以需要用两个遍历序列构造,方法都是画图确定build递归时的索引范围,可以用map优化
Construct Binary Tree from Inorder and Postorder Traversal
Construct Binary Tree from Preorder and Postorder Traversal
回复

使用道具 举报

🔗
 楼主| mereflora 2021-1-16 12:24:33 | 只看该作者
全局:
1.15
Serialize and Deserialize Binary Tree,因为是binary tree,所以为了反序列化,要在序列化时append null,前序/后序/层次遍历都可以,但是中序不行
Serialize and Deserialize N-ary Tree,因为是N-ary tree,不能像binary tree那样最多append 2个null,所以最好是append val,再append size,注意都要加上分隔符,这样每个节点有几个孩子就知道了
Serialize and Deserialize BST,关键是怎么利用BST的性质来避免序列化时存null,一般来说常用BST中序遍历是升序的,但是这里用先序遍历,deserialize时发现一个节点的val不再维护的min, max范围,就知道这个节点不属于这棵子树
Minimum Path Sum,可以用dp做是因为只能向下走向右走,dp subproblems不会形成环,所以可行,而四个方向都可走的shortest path问题要用Dijkstra
Cherry Pickup,贪心走两遍dp是错的,关键是转换思路,变成两个独立的人从终点走到起点,所以是3维状态的dp
回复

使用道具 举报

🔗
valkyrior 2021-1-16 14:46:20 | 只看该作者
全局:
1.15

Task Scheduler
LRU Cache
Minimum window substring
Longest string without repeating char
Longest string with at most 2 diff char
Longest string with at most k diff char
回复

使用道具 举报

🔗
 楼主| mereflora 2021-1-17 10:55:06 | 只看该作者
全局:
1.16
Unique BST,用dp
Unique BST II
Construct BST from Preorder Traversal
Search/Insert/Delete in a BST
回复

使用道具 举报

🔗
valkyrior 2021-1-17 13:35:21 | 只看该作者
全局:
1.16

Regular Expression Match
Letter combination of phone number
Sliding Window Maximum
回复

使用道具 举报

🔗
 楼主| mereflora 2021-1-18 11:11:24 | 只看该作者
全局:
1.17
Intersection of Two Linked Lists,双指针,一个走到头就重置回另一个list的开头,巧妙地counteract diff length of two lists,然后齐头并进直到meet
Lowest Common Ancestor of BST
Lowest Common Ancestor of Binary Tree,因为从底向上找LCA,所以都是postorder traversal,先把框架写出来,不管找几个节点的LCA,都是遇到要找的就返回它,null返回null,如果左右都有说明LCA是root,否则是其中一边返回的那个,如果说要找的节点可能不在tree上,那就不能遇到要找的就返回,而要全遍历到
Lowest Common Ancestor of Binary Tree II, III, IV
回复

使用道具 举报

🔗
valkyrior 2021-1-18 16:53:54 | 只看该作者
全局:
1.17
Plus One   
Reverse Linked List   
Reverse Linked List II  
Generate Parentheses

回复

使用道具 举报

🔗
 楼主| mereflora 2021-1-19 11:24:27 | 只看该作者
全局:
1.18
Valid Parentheses
Remove Invalid Parentheses,删除最少的括号使字符串合法,并返回所有合法字符串,dfs backtrack(s, 0, 0, {'(', ')'}, res),从last_i开始看,前面已经合法了,如果要删从last_j开始找,注意consecutive/non-consecutive rule[1]删除的情况
Minimum Remove to Make Valid Parentheses,不需要找所有的,所以不用backtrack,只需要从左到右,再从右到左扫描两遍,count<0时不append就行
Longest Valid Parentheses,和前面的区别是longest必须是consecutive的括号,所以相当于longest substring,所以可以用dp,也可以用stack,只不过需要stack.push(-1),当合法的pair出现时就pop,看stack.peek()不合法的index到当前index的差值,更新max。另一种最简单的做法是先从左到右扫描,如果左括号小于右括号,就重置left, right计数器,再从右到左扫描,如果右括号小于左括号,重置left, right计数器
Minimum Add to Make Parentheses Valid,一个左括号配一个右括号,就是简单地扫描看需要几个右括号,count<0时就代表需要一个左括号去匹配res++,最后别忘了加上count
Minimum Insertions to Balance a Parentheses String,一个左括号配两个右括号,比较tricky的是当遇到左括号时如果需要的右括号数为奇数,需要加一个需求量,再res+=1给一个右括号
Generate Parentheses, backtrack
回复

使用道具 举报

🔗
valkyrior 2021-1-19 16:08:13 | 只看该作者
全局:
1.18
322        Coin Change    
42         Trapping Rain Water
91        Decode ways
回复

使用道具 举报

🔗
 楼主| mereflora 2021-1-20 13:14:37 | 只看该作者
全局:
本帖最后由 mereflora 于 2021-1-20 13:16 编辑

1.19
Minimum Depth of Binary Tree,BFS
Open the Lock,关键是转化为图BFS求最短路径,从起点"0000"到终点target,每一步相当于在四个位置中只能上拨或下拨,所以一个vertex相当于有8个neighbors,然后一层一层找
Sudoku Solver,回溯就是在穷举,所以先写出backtrack框架,然后再填细节,一行搜完了到下一行
Valid Sudoku,比较tricky的是检查3x3方格,row=i/3*3+j/3, col=i%3*3+j%3,col相当于3,4,5要分别对应到0,3,6,所以i%3*3
Valid Anagram,用in[26]当做map,可以一遍同时扫描s和t

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表