枚举 [toc] 什么是枚举 枚举算法是一种经典的暴力算法,是通过遍历所有候选答案以找到正确的解的问题解决策略; 枚举的基本框架 1.给出解空间 建立数学模型,确立候选答案的范围,从数学的角度说:就是给出可能解的集合 这是最关键的一步,确立 正确 的解空间是应用枚举算法的前提 2.找到枚举的具体方法 ...
分类:
编程语言 时间:
2020-03-10 12:17:35
阅读次数:
52
题目描述:给定一个未排序的数组,找出最长连续序列的长度。要求算法的时间复杂度为o(n)。 题解: 暴力求解很容易想到:枚举每个数字作为序列的第一个数字,搜索所有的可能性。 但是并不是每个枚举都是有意义的,例如[1,3,4,2,5,6,8]。这里只对1,8枚举有意义,剩下的元素都不是最长连续序列候选片 ...
分类:
其他好文 时间:
2020-03-10 11:53:47
阅读次数:
56
暴力法就是两次迭代,对于这道题倒是ok,但是实际场景是不能选择的,因此直接用单步迭代的方式,无非就是记录最低点,找max差值点。 func maxProfit(prices []int) int { var minprice = math.MaxInt64 var maxprofit = 0 for ...
分类:
其他好文 时间:
2020-03-10 01:30:08
阅读次数:
46
T1 现实搜索题。 告诉我什么是真实。 如果一个串的子序列个数大于$n$,那么一定可以有一个名字。 所以说一个人搜出最多$n+1$个子序列即可。 然后网络流暴力增量匹配一下。 最后统计答案的时候判断哪个边满流即可。 T2 lcm不好弄。 考虑分别求每一个质因子的贡献。 这样相当于再求某一个质因子的$ ...
分类:
其他好文 时间:
2020-03-09 20:54:01
阅读次数:
53
恢复内容开始 1、暴力法 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NU ...
分类:
其他好文 时间:
2020-03-09 17:40:42
阅读次数:
64
题目链接: "121. 买卖股票的最佳时机" 题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例: 示例 1: 示例 2: 思路: 买入和 ...
分类:
其他好文 时间:
2020-03-09 13:48:53
阅读次数:
52
Chrome/Chromium的实验性功能+扩展推荐,让你的Chrome/Chromium起飞!
分类:
其他好文 时间:
2020-03-09 11:54:26
阅读次数:
72
题目描述 题解 首先我们考虑一种做法,对于一棵树考虑枚举每个点为根去 $\text{dfs}$ ,然后建立出特征串的 $\text{SAM}$ ,每次走到的点计算 $\text{right}$ 集合大小即可。效率为 $O(size^2)$ 。 考虑另一种做法,我们可以点分治,考虑 $u→x→v$ 这 ...
分类:
其他好文 时间:
2020-03-08 21:58:15
阅读次数:
89
动态规划 动态规划问题的一般形式就是求最值。 求解动态规划的核心问题是穷举。 动态规划的穷举有点特别,因为这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」或者「DP table」来优化穷举过程,避免不必要的计算。 而且,动态规划问题一定会具备「最优子结构」,才能通过子问 ...
分类:
其他好文 时间:
2020-03-08 21:46:59
阅读次数:
71
这种暴力又可爱的数据结构真的相当讨喜。如果题目中有操作是推平一段区间的话,那么它多半就是一道 ODT 的题。如果题目还保证了数据随机的话,那么恭喜你,ODT 一定可以简单高效的解决这个问题;但如果出题人卡数据的话,ODT 一定会 T 的飞起。 掌握 ODT 的难度是相当小的,只要理解到 split ...
分类:
其他好文 时间:
2020-03-07 13:19:45
阅读次数:
63