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]).
Example
Given A = [1, 2, 3]
, B = [2, 3 ,4]
.
Return 0.9926
.
Given A = [0]
, B = [0]
.
Return 2.0000
分析:
按照公式算就可以了。需要考虑invalid case.
1 class Solution { 2 /** 3 * @param A: An integer array. 4 * @param B: An integer array. 5 * @return: Cosine similarity. 6 */ 7 public double cosineSimilarity(int[] A, int[] B) { 8 9 if (A == null || B == null || A.length == 0 || B.length == 0 || A.length != B.length) return 2.0; 10 double nA = norm(A); 11 double nB = norm(B); 12 double m = 0; 13 if (nA == 0 || nB == 0) return 2.0; 14 for (int i = 0; i < A.length; ++i) { 15 m += A[i] * B[i]; 16 } 17 return m / (nA * nB); 18 } 19 double norm(int[] V) { 20 int res = 0; 21 for (int i = 0; i < V.length; ++i) { 22 res += V[i] * V[i]; 23 } 24 return Math.sqrt(res); 25 } 26 }