您的位置:首页 > 其它

lintcode-easy-Cosine Similarity

2016-02-24 13:53 519 查看
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]).

Example

Given A =
[1, 2, 3]
, B =
[2, 3 ,4]
.

Return
0.9926
.

Given A =
[0]
, B =
[0]
.

Return
2.0000


class Solution {
/**
* @param A: An integer array.
* @param B: An integer array.
* @return: Cosine similarity.
*/
public double cosineSimilarity(int[] A, int[] B) {
// write your code here
if(A == null || B == null)
return 2.0;

if(A.length != B.length)
return 2.0;

int num = 0;
int den1 = 0;
int den2 = 0;

for(int i = 0; i < A.length; i++){
num += A[i] * B[i];
den1 += A[i] * A[i];
den2 += B[i] * B[i];
}

if(den1 == 0 || den2 == 0)
return 2.0;

return num / (Math.sqrt(den1)) / (Math.sqrt(den2));

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: