对顶堆
对顶堆的应用题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
例如,
123[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5
设计一个支持以下两种操作的数据结构:
void addNum(int num) - 从数据流中添加一个整数到数据结构中。
double findMedian() - 返回目前所有元素的中位数。
示例 1:
1234输入:["MedianFinder","addNum","addNum","findMedian","addNum","findMedian"][[],[1],[2],[],[3],[]]输出:[null,null,null,1.50000,null,2.00000]
示例 2:
1234输入:["MedianFinder",& ...
约数之和
约数之和题目描述假设现在有两个自然数 $A, B$,$S$ 是这两个数的所有约数之和。
请你求出 $S \%9901$ 的值是多少。
输入格式在一行中输入用空格隔开的两个整数 $A, B$。
输出格式输出一个整数,代表 $S \%9901$ 的值。
数据范围两数均在 $5e7$ 范围内
输入样例:12 3
输出样例:115
注意: 两数不会同时为 0。
分析求解约数和公式
对于任意正整数 $N$,可以表示为若干素因数的乘积
N = \sum_{i = 1}^{k}P_i^{α_i}这些约数个总个数为
cnt = \prod_{i = 1}^{k}(1 + α_i)这些约数的和
sum = \prod_{i = 1}^{k}(\sum_{j = 0}^{α_i}{P_i}^j)把 A 分解质因数,进而就可以把 A 的 B 次方分解质因数,然后带入第三个式子求解即可
第三个式子是一个等比数列求和然后求积的形式,可以通过公式或者分治办法来求
代码如下:(此题涉及了很多模板,需要自取)
123456789101112131415161718192021222324252627282930 ...
KNN分类
KNN引入众所周知,电影可以按照题材分类,然而题材本身是如何定义的?由谁来判定某部电影属于哪个题材?也就是说同一题材的电影具有哪些公共特征?这些都是在进行电影分类时必须要考虑的问题。没有哪个电影人会说自己制作的电影和以前的某部电影类似,但我们确实知道每部电影在风格上的确有可能会和同题材的电影相近。那么动作片具有哪些共有特征,使得动作片之间非常类似,而与爱情片存在着明显的差别呢?动作片中也会存在接吻镜头,爱情片中也会存在打斗场景,我们不能单纯依靠是否存在打斗或者亲吻来判断影片的类型。但是爱情片中的亲吻镜头更多,动作片中的打斗场景也更频繁,基于此类场景在某部电影中出现的次数可以用来进行电影分类。本文基于电影中出现的亲吻、打斗出现的次数,使用k-近邻算法构造程序,自动划分电影的题材类型。
分类分类问题是机器学习中两大主流问题之一,在深度学习没有像今天一样火爆的时候,大家是怎样进行分类学习的呢?
本文介绍第一个机器学习算法: k-近邻算法,它非常有效而且易于掌握。首先,我们将探讨k-近邻算法的基本理论,以及如何使用距离测量的方法分类物品
介绍简单地说,KNN算法是度量输入与样本之间的距离来 ...
Hot100 盛水最多的容器
11. 盛最多水的容器这是LeetCode热题100的第7题 11.盛水最多的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
示例 1:
123输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例 2:
12输入:height = [1,1]输出:1
提示:
n == height.length
2 <= n <= 105
0 <= height[i] <= 104
解法贪心 | 思维题 | 双指针经过分析可以发现,每次把高的移动之后,水量不会增加,所以我们移动低的就能找到最大值
12345678910111213class Solution { public int maxAr ...
Hot100 正则表达式匹配
10. 正则表达式匹配这是LeetCode热题100的第6题 10.正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。
'.' 匹配任意单个字符
'*' 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。
示例 1:
123输入:s = "aa", p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。
示例 2:
123输入:s = "aa", p = "a*"输出:true解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。
示例 3:
123输入:s = "ab", p = &qu ...