• lintcode-445-余弦相似度


    445-余弦相似度

    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]).

    样例

    给出 A = [1, 2, 3], B = [2, 3 ,4].
    返回 0.9926.
    给出 A = [0], B = [0].
    返回 2.0000

    思路

    按向量求余弦公式即可

    code

    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 sizeA = A.size(), sizeB = B.size();
            if (sizeA != sizeB) {
                return 0;
            }
            long long AB = 0, A2 = 0, B2 = 0;
            for (int i = 0; i < sizeA; i++) {
                AB += A[i] * B[i];
                A2 += A[i] * A[i];
                B2 += B[i] * B[i];
            }
            if (A2 != 0 && B2 != 0) {
                return (double)(AB / sqrt(A2) / sqrt(B2));
            }
            else {
                return (double)2;
            }
        }
    };
    
  • 相关阅读:
    第二阶段冲刺01
    客户端-服务器模式
    可用性和可修改性战术分析
    质量属性
    《架构漫谈》阅读笔记
    《软件需求模式》06
    《软件需求模式》05
    《软件需求模式》04
    《软件需求模式》03
    《软件需求模式》02
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7396441.html
Copyright © 2020-2023  润新知