[LintCode] Cosine Similarity 余弦公式
Cosine similarity is a measure of similarity between two vectors of an inner product space that measures the cosine of the angle between them. The cosine of 0° is 1, and it is less than 1 for any other angle.
See wiki: Cosine Similarity
Here is the formula:
Given two vectors A and B with the same size, calculate the cosine similarity.
Return 2.0000
if cosine similarity is invalid (for example A = [0] and B = [0]).
Yes
Example
Given A = [1, 2, 3]
, B = [2, 3 ,4]
.
Return 0.9926
.
Given A = [0]
, B = [0]
.
Return 2.0000
这道题让我们求两个向量之间的余弦值,而且给了我们余弦公式,唯一要注意的就是当余弦值不存在时,返回2.0,其余的照公式写即可,参见代码如下:
class Solution { public: /** * @param A: An integer array. * @param B: An integer array. * @return: Cosine similarity. */ double cosineSimilarity(vector<int> A, vector<int> B) { // write your code here double nA = norm(A), nB = norm(B), m = 0; if (nA == 0 || nB == 0) return 2.0; for (int i = 0; i < A.size(); ++i) { m += A[i] * B[i]; } return m / (nA * nB); } double norm(vector<int> V) { int res = 0; for (int i = 0; i < V.size(); ++i) { res += V[i] * V[i]; } return sqrt(res); } };
分类:
LintCode
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 记录一次线上问题排查:JDK序列化问题
· 一个包含 80+ C#/.NET 编程技巧实战练习开源项目!
· 待到山花烂漫时:鸿蒙开发者的个人感悟
· 【SQL周周练】一句 SQL 如何帮助 5 个人买到电影院最好的座位?
· Excel百万数据高性能导出方案!
· JavaScript 没有“包”