lintcode-easy-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
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)); } }