# Cosine Similarity

Easy

## Question

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 =  and B = ).

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

Return 0.9926 .

Given A =  , B =  .

Return 2.0000 .

## Solution

#### Java

``````class Solution {
/**
* @param A: An integer array.
* @param B: An integer array.
* @return: Cosine similarity.
*/
public double cosineSimilarity(int[] A, int[] B) {
if (A.length == 0) { // invalid
return 2d;
}
// write your code here
int abSum = 0;
int a2Sum = 0;
int b2Sum = 0;
for (int i = 0; i < A.length; i++) {
abSum += A[i] * B[i];
a2Sum += A[i] * A[i];
b2Sum += B[i] * B[i];
}
if (a2Sum == 0 || b2Sum == 0) { // invalid
return 2d;
}
return abSum / (Math.sqrt(a2Sum) * Math.sqrt(b2Sum));
}
}

``````