Conduct Dot Product of two large Vectors

1. two pointers

2. hashmap

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

 package fb;

 public class DotProduct {

     public int dotPro(int[][] v1, int[][] v2) {
int[][] shortV;
int[][] longV;
if (v1.length < v2.length) {
shortV = v1;
longV = v2;
}
else {
shortV = v2;
longV = v1;
} int res = 0;
for (int i=0; i<shortV.length; i++) {
int shortIndex = shortV[i][0];
int shortValue = shortV[i][1];
int longSeq = binarySearch(longV, shortIndex);
if (longSeq >= 0) {
res += shortValue * longV[longSeq][1];
}
}
return res;
} public int binarySearch(int[][] arr, int target) {
int l=0, r=arr.length-1;
while (l <= r) {
int m = (l+r)/2;
if (arr[m][0] == target) return m;
else if (arr[m][0] < target) l = m + 1;
else r = m - 1;
}
return -1;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DotProduct sol = new DotProduct();
int[][] v2 = new int[][]{{0,2},{1,3},{5,2},{7,1},{10,1}};
int[][] v1 = new int[][]{{1,6},{7,2}};
int res = sol.dotPro(v1, v2);
System.out.println(res);
} }

最新文章

  1. myeclipse6.5注册机
  2. 浅谈DOM性能考虑
  3. Log4net中的调错
  4. Cocos2d-x分类
  5. Sql Server 事务隔离级别的查看及更改
  6. 解析php时间戳与日期的转换
  7. Mondriaan&#39;s Dream(POJ 2411状态压缩dp)
  8. div页面居中(上下左右)
  9. GetWindowText
  10. 字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  11. android 防止多次点击,它会导致事件侦听响应于其他接口
  12. 一天搞定CSS:层级(z-index)--18
  13. c# throw和throw ex
  14. Centos7下使用yum源安装zabbix Server
  15. 如何编辑PDF文件,怎么使用PDF裁剪页面工具
  16. oracle用户下查看服务器或者本地IP地址
  17. leetcode540
  18. Android开发中adb命令的常用方法
  19. angularJs的工具方法3
  20. 类似于xml的一种数据传输格式protobuf

热门文章

  1. 咸鱼入门到放弃7--jsp&lt;二&gt;jsp常用标签
  2. 安全体系(一)—— DES算法详解
  3. HDU 4283 You Are the One 【区间DP】
  4. 百度语音+react+loopback实现语音合成返回播放
  5. ISP PIPLINE (五) Denoise
  6. java自动化-junit框架简述
  7. 执行Android后台任务的最佳实践
  8. Do-Now—团队Scrum 冲刺博客二
  9. Android Notification 详解
  10. day27、28 二十八、项目:选课系统