2014-05-06 13:23

题目链接

原题:

  1. Finding a pair of elements from two sorted lists(or array) for which the sum of the elements is a certain value. Anyway solution that can do better than O(a.length + b.length)?

题目:给定两个有序的数组,如何从两数组中各选出一个元素使得两元素加起来等于某个目标值。

解法:又是这个“Guy”出的题目,此人想要追求优于O(n + m)的算法。这人代码水平不高,我想他对于算法复杂度的上下界也不知道怎么估计吧。我个人认为不太可能更优化了,因为你找的不是一个元素,而是一对。我的解法,是使用两个iterator,一个在A数组头部,一个在B数组尾部。通过A数组后移,B数组前移来调整相加的结果。这样的算法,复杂度就是O(n + m)的。

代码:

  1. // http://www.careercup.com/question?id=6271724635029504
  2. #include <cstdio>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. bool twoSortedArraySum(vector<int> &a, vector<int> &b, int target, int &ia, int &ib)
  7. {
  8. int i, j;
  9. int na, nb;
  10.  
  11. na = (int)a.size();
  12. nb = (int)b.size();
  13.  
  14. i = ;
  15. j = nb - ;
  16.  
  17. int sum;
  18. while (i <= na - && j >= ) {
  19. sum = a[i] + b[j];
  20. if (sum > target) {
  21. --j;
  22. } else if (sum < target) {
  23. ++i;
  24. } else {
  25. ia = i;
  26. ib = j;
  27. return true;
  28. }
  29. }
  30. return false;
  31. }
  32.  
  33. int main()
  34. {
  35. vector<int> a, b;
  36. int na, nb;
  37. int i;
  38. int ia, ib;
  39. int target;
  40.  
  41. while (scanf("%d%d", &na, &nb) == && (na > && nb > )) {
  42. a.resize(na);
  43. b.resize(nb);
  44. for (i = ; i < na; ++i) {
  45. scanf("%d", &a[i]);
  46. }
  47. for (i = ; i < nb; ++i) {
  48. scanf("%d", &b[i]);
  49. }
  50. while (scanf("%d", &target) == ) {
  51. ia = ib = -;
  52. if (twoSortedArraySum(a, b, target, ia, ib)) {
  53. printf("%d + %d = %d\n", a[ia], b[ib], target);
  54. } else {
  55. printf("Not found.\n");
  56. }
  57. }
  58. }
  59.  
  60. return ;
  61. }

Careercup - Google面试题 - 6271724635029504的更多相关文章

  1. Careercup - Google面试题 - 5732809947742208

    2014-05-03 22:10 题目链接 原题: Given a dictionary, and a list of letters ( or consider as a string), find ...

  2. Careercup - Google面试题 - 5085331422445568

    2014-05-08 23:45 题目链接 原题: How would you use Dijkstra's algorithm to solve travel salesman problem, w ...

  3. Careercup - Google面试题 - 4847954317803520

    2014-05-08 21:33 题目链接 原题: largest number that an int variable can fit given a memory of certain size ...

  4. Careercup - Google面试题 - 6332750214725632

    2014-05-06 10:18 题目链接 原题: Given a ,) (,) (,), (,) should be returned. Some suggest to use Interval T ...

  5. Careercup - Google面试题 - 5634470967246848

    2014-05-06 07:11 题目链接 原题: Find a shortest path ,) to (N,N), assume is destination, use memorization ...

  6. Careercup - Google面试题 - 5680330589601792

    2014-05-08 23:18 题目链接 原题: If you have data coming in rapid succession what is the best way of dealin ...

  7. Careercup - Google面试题 - 5424071030341632

    2014-05-08 22:55 题目链接 原题: Given a list of strings. Produce a list of the longest common suffixes. If ...

  8. Careercup - Google面试题 - 5377673471721472

    2014-05-08 22:42 题目链接 原题: How would you split a search query across multiple machines? 题目:如何把一个搜索que ...

  9. Careercup - Google面试题 - 6331648220069888

    2014-05-08 22:27 题目链接 原题: What's the tracking algorithm of nearest location to some friends that are ...

随机推荐

  1. 【UEditor】远程上传图片到【七牛云存储】

    杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...

  2. java实现 swing模仿金山打字 案例源码

    java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http://java.662p.com 代码: <font size="3">im ...

  3. 如何实现Android 中断线程的处理

    我现在对一个用户注册的功能1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)2.用一个线程clientThread执行数据的提交和返回 问题:考虑 ...

  4. java Literals

    Primitive Data Types The Java programming language is statically-typed, which means that all variabl ...

  5. C语言中的关键字

    1.C语言中的关键字都有实际的意义. 2.C语言中的23个关键字如下: char:声明字符型变量. short:声明短整型变量. int:声明整型变量. long:声明长整型变量. float:声明浮 ...

  6. jQuery在IE7和8下setInterval失效的问题

    原因不在于setInterval,而是IE的缓存造成ajax请求页没有更新的问题. 在请求的url中加入一个随机数参数即可. var CheckPaied = function (transactio ...

  7. Spark自定义分区(Partitioner)

    我们都知道Spark内部提供了HashPartitioner和RangePartitioner两种分区策略,这两种分区策略在很多情况下都适合我们的场景.但是有些情况下,Spark内部不能符合咱们的需求 ...

  8. 通过HttpClient方式连接网络

    xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...

  9. web.xml中常见配置解读

    文章转自:http://blog.csdn.net/sdyy321/article/details/5838791 有一般XML都必须有的版本.编码.DTD <web-app>下子元素&l ...

  10. sql中with as的用法练习

    在工作中经常看到有人使用with as,查询很顺畅,也很快,很好奇,在网上也有不少资料,看了大神的文章,也练习一下. 首先给出两位位大神文章的链接,介绍十分详细:http://www.cnblogs. ...