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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容