OJ:Lintcode 余弦相似度

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容