lintcode 445. 余弦相似度

余弦相似性是内积空间的两个矢量之间的相似性的度量,其测量它们之间的角度的余弦。 0° 的余弦为 1,对于任何其他角度,余弦小于 1。

Wiki 链接: Cosine Similarity

这里给出公式:

cosine-similarity

给你两个相同大小的向量 A B,求出他们的余弦相似度。

返回 2.0000 如果余弦相似不合法 (比如 A = [0] B = [0])。

样例
样例 1:

输入:A = [1,4,0], B = [1,2,3]
输出:0.5834
样例 2:

输入:A = [1], B = [2]
输出:1.0000

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
        int len1=A.size();
        int len2=B.size();
        if(len1!=len2) return 0;
        
        double sum=0;
        double powA=0;
        double powB=0;
        for (int i = 0; i < len1; i++) {
            /* code */
            sum+=A[i]*B[i];
            powA+=pow(A[i],2);
            powB+=pow(B[i],2);
        }
        if(powA==0||powB==0) return 2.0000;
      //  double sqrtA=sqrt(powA);
        //double sqrtB=sqrt(powB);
        return sum/(sqrt(powA)*sqrt(powB));
    }
};```

上一篇:nu-book/zxing-cpp在windows7下的编译


下一篇:Android ZXING通过BitMatrix编码qr->存储到byte []->插入数据库