算法刷题记录
文章平均质量分 65
系统学习算法题
Cutewr
这个作者很懒,什么都没留下…
展开
-
动态规划-打家劫舍系列
空间优化:因为只需要到前面第一家的最大金额,和到前面第二家的最大金额,所以只用a,b,c三个变量分别表示以上两个变量和到当前家最大金额。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,2)不偷当前节点的情况下,res=max(偷左节点的最大值,不偷左节点的最大值)+max(偷右节点的最大值,不偷右节点的最大值)你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。1)偷当前节点的情况下,res=root.val+不偷左节点的最大值+不偷右节点的最大值。原创 2024-07-21 17:47:12 · 407 阅读 · 0 评论 -
设计RandomPool结构【代码实现】
使用key-index和index-key两张哈希表,需要indexKey表来根据random函数得出的位置随机删除key,需要keyIndex来 获取删除的key的位置,并且把最后一个位置的元素填充到这个位置。**【题目】**设计一种结构,在该结构中有如下三个功能:insert(key):将某个key加入到该结构,做到不重复加入。delete(key):将原本在结构中的某个key移除。getRandom():等概率随机返回结构中的任何一个key。返回结构中的任何一个key。本题不需要定制哈希表。原创 2024-07-11 13:04:47 · 336 阅读 · 0 评论 -
刷题笔记【二叉树其他问题篇】
给定一棵二叉搜索树和其中的一个节点p,找到该节点在树中的中序后继。如果节点没有中序后继,请返回null。二叉搜索树中,节点p的后继是值比p.val大的节点中键值最小的节点。原创 2024-07-06 16:13:17 · 370 阅读 · 0 评论 -
刷题笔记【二叉树类型判断篇】
先判断左子树是否为二叉搜索树,再判断head.val>preValue,最后返回右子树是否为BST犯的错误:把preValue的定义写到方法体内了,这样并没有存储上一个头结点的值。遍历中序列表,判断是否都是递增。原创 2024-07-06 16:11:41 · 412 阅读 · 0 评论 -
刷题笔记【二叉树遍历篇】
压头节点弹出并打印,接着如果右节点存在先push右节点,如果左节点存在再push左节点。沿着左侧一直往下,没有左节点之后,弹出并输出,push右节点。->recursion(1.right)【null 返回】->->recursion(3.right)【null 返回】->->recursion(1.left)【null 返回】->->recursion(3.left)【null 返回】->在先序的基础上,换成【根右左】,再逆序打印,得出后序遍历。按照如下函数,遍历完每个节点都会经过三次。原创 2024-07-05 14:32:06 · 257 阅读 · 0 评论 -
刷题笔记【链表篇】
给你单链表的头节点head,请你反转链表,并返回反转后的链表。维护当前节点cur,前一个节点pre,下一个节点nextNode。每次执行一步有cur.next=pre,并把cur、pre、next都往后移。每一次循环最后一步都是更新cur的位置,cur=nextNode,最后cur==null,因此判断返回的时候,需要返回pre,而不是cur。原创 2024-07-05 11:41:14 · 1188 阅读 · 0 评论