摘要:
设计一个算法来序列化和反序列化二叉搜索树 对序列化/反序列化算法的工作方式没有限制 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。 ###1. 非递归先序遍历 + 编码 ``` class Codec { public: // Encodes a tree t 阅读全文
摘要:
k 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是唯一的,也就是说每个字符在子序列里只出现过一次。 定义 f(c) 为字符 c 在 s 中出现的次数。 k 子序列的 美丽值定义为这个子序列中每一个字符 c 的f(c)之和 ###1. 贪心 + 组合枚举 贪心选美丽值最大的字符,对于 阅读全文
摘要:
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 ###1. 动态规划 由于二叉搜索树是有序的,父节点值大于左子树,而小于右子树,所以选定根节点后会将集合划分为两部分 显然,左子树和右子树的构成同样也是个二叉搜索树个数 阅读全文
摘要:
一般是要求在对数时间完成查询,或是索引链接过长,迭代步数太多 ###1. [树节点的第K个祖先](https://www.cnblogs.com/929code/p/17473917.html) ###2. [在传球游戏中最大化函数值](https://www.cnblogs.com/929code 阅读全文
摘要:
小A买了一个空间跑路器,每秒钟可以跑 2^k千米(k 是任意自然数)。 当然,这个机器是用longint 存的,所以总跑路长度不能超过其范围。 小A的家到公司的路可以看做一个有向图,小A 家为点 1,公司为点 n,每条边长度均为一千米。 小A想每天能醒地尽量晚,所以让你帮他算算,他最少需要几秒才能到 阅读全文
摘要:
给你一个长度为 n 下标从 0 开始的整数数组 receiver 和一个整数 k 总共有 n 名玩家,玩家 编号 互不相同,且为 [0, n - 1] 中的整数。 你需要从 n 名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传 恰好 k 次 定义函数 f(x) 表示从编号为 x 的玩家 阅读全文
摘要:
给你一个下标从 0 开始的数组 nums ,它包含非负整数,且全部为 2 的幂,同时给你一个整数 target 。 一次操作中,你必须对数组做以下修改: * 选择数组中一个元素 nums[i] ,满足 nums[i] > 1 。 * 将 nums[i] 从数组中删除。 * 在 nums 的末尾添加两 阅读全文
摘要:
###一. 广度优先算法 使用队列记录当前层次的状态 同时使用哈希表防止重复遍历 单向广度优先是逐渐增大范围同时判断目标是否在范围内 ``` int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}}; int main() { string board; cin>>bo 阅读全文
摘要:
爱与愁大神后院里种了n 棵樱花树,每棵都有美学值 爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸,他懂得如何欣赏樱花: 一种樱花树看一遍过,一种樱花树最多看,一种樱花树可以看无数遍。 但是看每棵樱花树都有一定的时间 。爱与愁大神离去上学的时间只剩下一小会儿了。求解看哪几棵樱花树能使美学值最 阅读全文
摘要:
自 01背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 01 背包, 他的物品大致可分为 k 组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。 ###1. 动态规划 分组背包 ``` int maxval(int v,vector&c,vector&w, 阅读全文