Careercup - Google面试题 - 6271724635029504
2014-05-06 13:23
原题:
- 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)的。
代码:
- // http://www.careercup.com/question?id=6271724635029504
- #include <cstdio>
- #include <vector>
- using namespace std;
- bool twoSortedArraySum(vector<int> &a, vector<int> &b, int target, int &ia, int &ib)
- {
- int i, j;
- int na, nb;
- na = (int)a.size();
- nb = (int)b.size();
- i = ;
- j = nb - ;
- int sum;
- while (i <= na - && j >= ) {
- sum = a[i] + b[j];
- if (sum > target) {
- --j;
- } else if (sum < target) {
- ++i;
- } else {
- ia = i;
- ib = j;
- return true;
- }
- }
- return false;
- }
- int main()
- {
- vector<int> a, b;
- int na, nb;
- int i;
- int ia, ib;
- int target;
- while (scanf("%d%d", &na, &nb) == && (na > && nb > )) {
- a.resize(na);
- b.resize(nb);
- for (i = ; i < na; ++i) {
- scanf("%d", &a[i]);
- }
- for (i = ; i < nb; ++i) {
- scanf("%d", &b[i]);
- }
- while (scanf("%d", &target) == ) {
- ia = ib = -;
- if (twoSortedArraySum(a, b, target, ia, ib)) {
- printf("%d + %d = %d\n", a[ia], b[ib], target);
- } else {
- printf("Not found.\n");
- }
- }
- }
- return ;
- }
Careercup - Google面试题 - 6271724635029504的更多相关文章
- Careercup - Google面试题 - 5732809947742208
2014-05-03 22:10 题目链接 原题: Given a dictionary, and a list of letters ( or consider as a string), find ...
- Careercup - Google面试题 - 5085331422445568
2014-05-08 23:45 题目链接 原题: How would you use Dijkstra's algorithm to solve travel salesman problem, w ...
- Careercup - Google面试题 - 4847954317803520
2014-05-08 21:33 题目链接 原题: largest number that an int variable can fit given a memory of certain size ...
- Careercup - Google面试题 - 6332750214725632
2014-05-06 10:18 题目链接 原题: Given a ,) (,) (,), (,) should be returned. Some suggest to use Interval T ...
- Careercup - Google面试题 - 5634470967246848
2014-05-06 07:11 题目链接 原题: Find a shortest path ,) to (N,N), assume is destination, use memorization ...
- Careercup - Google面试题 - 5680330589601792
2014-05-08 23:18 题目链接 原题: If you have data coming in rapid succession what is the best way of dealin ...
- Careercup - Google面试题 - 5424071030341632
2014-05-08 22:55 题目链接 原题: Given a list of strings. Produce a list of the longest common suffixes. If ...
- Careercup - Google面试题 - 5377673471721472
2014-05-08 22:42 题目链接 原题: How would you split a search query across multiple machines? 题目:如何把一个搜索que ...
- Careercup - Google面试题 - 6331648220069888
2014-05-08 22:27 题目链接 原题: What's the tracking algorithm of nearest location to some friends that are ...
随机推荐
- 【UEditor】远程上传图片到【七牛云存储】
杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...
- java实现 swing模仿金山打字 案例源码
java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http://java.662p.com 代码: <font size="3">im ...
- 如何实现Android 中断线程的处理
我现在对一个用户注册的功能1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)2.用一个线程clientThread执行数据的提交和返回 问题:考虑 ...
- java Literals
Primitive Data Types The Java programming language is statically-typed, which means that all variabl ...
- C语言中的关键字
1.C语言中的关键字都有实际的意义. 2.C语言中的23个关键字如下: char:声明字符型变量. short:声明短整型变量. int:声明整型变量. long:声明长整型变量. float:声明浮 ...
- jQuery在IE7和8下setInterval失效的问题
原因不在于setInterval,而是IE的缓存造成ajax请求页没有更新的问题. 在请求的url中加入一个随机数参数即可. var CheckPaied = function (transactio ...
- Spark自定义分区(Partitioner)
我们都知道Spark内部提供了HashPartitioner和RangePartitioner两种分区策略,这两种分区策略在很多情况下都适合我们的场景.但是有些情况下,Spark内部不能符合咱们的需求 ...
- 通过HttpClient方式连接网络
xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- web.xml中常见配置解读
文章转自:http://blog.csdn.net/sdyy321/article/details/5838791 有一般XML都必须有的版本.编码.DTD <web-app>下子元素&l ...
- sql中with as的用法练习
在工作中经常看到有人使用with as,查询很顺畅,也很快,很好奇,在网上也有不少资料,看了大神的文章,也练习一下. 首先给出两位位大神文章的链接,介绍十分详细:http://www.cnblogs. ...