LintCode: Cosine Similarity

简介:

C++

复制代码
 1 class Solution {
 2 public:
 3     /**
 4      * @param A: An integer array.
 5      * @param B: An integer array.
 6      * @return: Cosine similarity.
 7      */
 8     double cosineSimilarity(vector<int> A, vector<int> B) {
 9         // write your code here
10         int AB = 0, size;
11         double lenA = 0, lenB = 0;
12         size = A.size();
13         for (int i = 0; i < size; i++) {
14             AB += A[i]*B[i];
15             lenA += A[i]*A[i];
16             lenB += B[i]*B[i];
17         }
18         if (0 == AB && 0 == lenA && 0 == lenB) {
19             return 2;
20         } else {
21             return AB/(sqrt(lenA)*sqrt(lenB));
22         }
23         
24     }
25 };
复制代码

 

本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4999777.html,如需转载请自行联系原作者


相关文章
|
vr&ar 数据安全/隐私保护
old-fashion1题解
old-fashion1题解
142 0
old-fashion1题解
|
算法
LeetCode 334. Increasing Triplet Subsequence
给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。 数学表达式如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1, 使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。
90 0
LeetCode 334. Increasing Triplet Subsequence
AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
88 0
AtCoder Beginner Contest 203 Pond(二分+二维前缀和)
大体思路: 二分,将原矩阵根据二分的值变成01矩阵,如果元素值> val 就变为1,否则0 对于k * k 的矩阵,统计区域内元素之和,如果 sum < ⌊k2 / 2⌋ + 1,意味着当前k * k矩阵的中位数小于x,而x是我们的答案(最小中位数), ①sum < ⌊k2 / 2⌋ + 1 情况下x取得太大,r = mid ②反之,x还可能取更小的,l = mid 但是需要注意下l的初始值,当取0 or 1的时候是会wa掉的:
241 0
AtCoder Beginner Contest 203 Pond(二分+二维前缀和)
【LeetCode】Increasing Triplet Subsequence(334)
  Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.
100 0