1. Conduct Dot Product of two large Vectors

1. two pointers

2. hashmap

3. 如果没有额外空间,如果一个很大,一个很小,适合scan小的,并且在大的里面做binary search

  1. package fb;
  2.  
  3. public class DotProduct {
  4.  
  5. public int dotPro(int[][] v1, int[][] v2) {
  6. int[][] shortV;
  7. int[][] longV;
  8. if (v1.length < v2.length) {
  9. shortV = v1;
  10. longV = v2;
  11. }
  12. else {
  13. shortV = v2;
  14. longV = v1;
  15. }
  16.  
  17. int res = 0;
  18. for (int i=0; i<shortV.length; i++) {
  19. int shortIndex = shortV[i][0];
  20. int shortValue = shortV[i][1];
  21. int longSeq = binarySearch(longV, shortIndex);
  22. if (longSeq >= 0) {
  23. res += shortValue * longV[longSeq][1];
  24. }
  25. }
  26. return res;
  27. }
  28.  
  29. public int binarySearch(int[][] arr, int target) {
  30. int l=0, r=arr.length-1;
  31. while (l <= r) {
  32. int m = (l+r)/2;
  33. if (arr[m][0] == target) return m;
  34. else if (arr[m][0] < target) l = m + 1;
  35. else r = m - 1;
  36. }
  37. return -1;
  38. }
  39.  
  40. /**
  41. * @param args
  42. */
  43. public static void main(String[] args) {
  44. // TODO Auto-generated method stub
  45. DotProduct sol = new DotProduct();
  46. int[][] v2 = new int[][]{{0,2},{1,3},{5,2},{7,1},{10,1}};
  47. int[][] v1 = new int[][]{{1,6},{7,2}};
  48. int res = sol.dotPro(v1, v2);
  49. System.out.println(res);
  50. }
  51.  
  52. }

FB面经Prepare: Dot Product的更多相关文章

  1. [UCSD白板题] Minimum Dot Product

    Problem Introduction The dot product of two sequences \(a_1,a_2,\cdots,a_n\) and \(b_1,b_2,\cdots,b_ ...

  2. Dot Product

    These are vectors: They can be multiplied using the "Dot Product" (also see Cross Product) ...

  3. CUDA Samples: dot product(使用零拷贝内存)

    以下CUDA sample是分别用C++和CUDA实现的点积运算code,CUDA包括普通实现和采用零拷贝内存实现两种,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程C ...

  4. 向量点积(Dot Product),向量叉积(Cross Product)

    参考的是<游戏和图形学的3D数学入门教程>,非常不错的书,推荐阅读,老外很喜欢把一个东西解释的很详细. 1.向量点积(Dot Product) 向量点积的结果有什么意义?事实上,向量的点积 ...

  5. FB面经 Prepare: All Palindromic Substrings

    Given a string, calculate how many substring is palindrome. Ignore non-char characters. Ignore case; ...

  6. FB面经 Prepare: Task Schedule

    tasks has cooldown time, give an input task id array, output finish time input: AABCA A--ABCA output ...

  7. FB面经 Prepare: Make Parentheses valid

    给一组括号,remove最少的括号使得它valid 从左从右各scan一次 package fb; public class removeParen { public static String fi ...

  8. FB面经Prepare: Friends Recommendation

    有个getFriend() API, 让你推荐你的朋友的朋友做你的朋友,当然这个新朋友不能是你原来的老朋友 package fb; import java.util.*; public class R ...

  9. FB面经prepare: Count the number of Vector

    给一个超级大的排好序的vector [abbcccdddeeee]比如,要求返回[{,a}, {,b}, {,c}, {,d}, {,e}......]复杂度要优于O(N) 分析: 如果是binary ...

随机推荐

  1. P1525 关押罪犯 并查集

    题目描述 SS城现有两座监狱,一共关押着NN名罪犯,编号分别为1-N1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值) ...

  2. spark_to_kakfa

    package kafka import java.io.InputStream import java.text.SimpleDateFormat import java.util.{Date, H ...

  3. Beta(7/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  4. windows应用程序框架及实例

    应用程序框架:同一类型应用程序的结构大致相同,并有很多相同的源代码,因此可以通过一个应用程序框架AFX(Application FrameWorks)编写同一类型应用程序的通用源代码. 主要向导: D ...

  5. BZOJ.3566.[SHOI2014]概率充电器(概率DP 树形DP)

    BZOJ 洛谷 这里写的不错,虽然基本还是自己看转移... 每个点的贡献都是\(1\),所以直接求每个点通电的概率\(F_i\),答案就是\(\sum F_i\). 把\(F_x\)分成:父节点通电给 ...

  6. saprfc

    PHP在使用saprfc的时候,首先需要安装 saprfc 拓展,然后在引入saprfc.php类库,最后在使用.   一.PHP saprfc拓展的安装(Linux):   安装方法:   安装时需 ...

  7. 解决sql_mode=only_full_group_by的问题

    1.mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_ ...

  8. collections标准库

    collections标准库 之前Python的第三方库用的一直很舒服,现在突然发现标准库也有collections这样的神器,可以补充list.set.dict以外的应用 1. namedtuple ...

  9. Laravel安装redis扩展

    Laravel安装redis扩展 1.使用命令行,执行(当然要先安装composer) composer require predis/predis 2.执行完就安装好了,redis相关配置可以到.e ...

  10. jquery第二篇

    1  操作元素(属性,css,文档处理) --------------------------属性 $("").attr(); $("").removeAttr ...