OJ:Lintcode 余弦相似度

作者: DayDayUpppppp | 来源:发表于2017-02-19 09:42 被阅读10次
image.png

class Solution {
public:
    /**
     * @param A: An integer array.
     * @param B: An integer array.
     * @return: Cosine similarity.
     */

    //如果vector 中的所有元素都为空,那么返回false
    bool is_zero(vector<int> a){
        for(auto it=a.begin();it!=a.end();it++){
            if(*it!=0){
                return true;
            }
        }
        return false;
    }
    double cosineSimilarity(vector<int> A, vector<int> B) {
        // write your code here
        if(A.empty()==true){
            return 2.0000;
        }

        if((is_zero(A)==false)&&(is_zero(B)==false)){
            return 2.0000;
        }
    

        double res1=0;

        for(int i=0;i<A.size();i++){
            res1=res1+A[i]*B[i];
        }

        double res2=0;
        for(int i=0;i<A.size();i++){
            res2=res2+A[i]*A[i];
        }
        res2=sqrt(res2);
        
        double res3=0;
        for(int i=0;i<B.size();i++){
            res3=res3+B[i]*B[i];
        }
        res3=sqrt(res3);

        return res1/(res2*res3);
    }
};

相关文章

网友评论

    本文标题:OJ:Lintcode 余弦相似度

    本文链接:https://www.haomeiwen.com/subject/duzdwttx.html