人人网2014年笔试题【两个数之和等于第三个数】
2013-09-20 12:04
399 查看
雪影工作室版权所有,转载请注明【http://blog.csdn.net/lina791211】
2013-09-17 | 题目来源 http://blog.csdn.net/dlutbrucezhang/article/details/11737269
人人网2014年笔试题: 给出一个有序数组,另外给出第三个数,问是否能在数组中找到两个数,这两个数之和等于第三个数。
本算法实现参考原博客的算法实现,左右共同开始,使用“碰撞”的方式进行匹配,只需遍历一次数组即可算出结果。(数组int[] array,头pH,尾pT)
引用原文的流程:
我们首先看到第一句话,这个数组是有序的,所以,我们可以定义两个指针,一个指向数组的第一个元素,另一个指向应该指向的位置(这个需要看具体的实现和数组给定的值),首先计算两个位置的和是否等于给定的第三个数,如果等于则算法结束,如果大于,则尾指针向头指针方向移动,如果小于,则头指针向尾指针方向移动,当头指针大于等于尾指针时算法结束,没有找到这样的两个数。
原博文使用C语言实现了此算法,本人的C语言在这一年全还给了C语言老师,实现起来颇为慢,故而转到Java实现。
源码奉上,另外感谢原博主提供的人人网校招笔试题。
慢慢尝试使用其它方法实现。如果有什么好的方法,欢迎大家共同探讨
一、灵感来源
2013-09-17 | 题目来源 http://blog.csdn.net/dlutbrucezhang/article/details/11737269
二、题目
人人网2014年笔试题: 给出一个有序数组,另外给出第三个数,问是否能在数组中找到两个数,这两个数之和等于第三个数。
三、Java实现
本算法实现参考原博客的算法实现,左右共同开始,使用“碰撞”的方式进行匹配,只需遍历一次数组即可算出结果。(数组int[] array,头pH,尾pT)引用原文的流程:
我们首先看到第一句话,这个数组是有序的,所以,我们可以定义两个指针,一个指向数组的第一个元素,另一个指向应该指向的位置(这个需要看具体的实现和数组给定的值),首先计算两个位置的和是否等于给定的第三个数,如果等于则算法结束,如果大于,则尾指针向头指针方向移动,如果小于,则头指针向尾指针方向移动,当头指针大于等于尾指针时算法结束,没有找到这样的两个数。
原博文使用C语言实现了此算法,本人的C语言在这一年全还给了C语言老师,实现起来颇为慢,故而转到Java实现。
源码奉上,另外感谢原博主提供的人人网校招笔试题。
package com.RenRen; /** * @题目 给出一个有序数组,另外给出第三个数,问是否能在数组中找到两个数,这两个数之和等于第三个数。 * @author 雪影工作室 * */ public class T201401 { public static void main(String[] args) { int[] array = {1,2,3,4,6,9,11,12,23,45}; int total = 19; int pH=0; int pT=array.length-1; Boolean flag = false; while(pH<pT){ int temp = array[pH] + array[pT]; if(temp<total) { pH++; continue; } if(temp>total){ pT--; continue; } if(temp==total) { flag = true; break; } } if(flag){ System.out.println(array[pH] + "+" + array[pT] + "=" + total); }else{ System.out.println("未找到"); } } }
四、备用
慢慢尝试使用其它方法实现。如果有什么好的方法,欢迎大家共同探讨
相关文章推荐
- 人人网2014年笔试题【两个数之和等于第三个数】
- 人人网2014年笔试题【两个数之和等于第三个数】
- 不用定义第三个变量来实现两个数的交换
- 虔诚的学习者 腾讯2014年校园招聘笔试试题
- 【银行】2014年中信银行IT类笔试回忆版
- 两个数互换,不使用第三个空间
- 腾讯2014年实习生招聘笔试+两次面试经历
- 2014年阿里巴巴9月14号笔试题总结
- 创新工场笔试题2014年,求概率
- 一个无序数组中两个数之和等于给定的值sum
- 2014年阿里巴巴在线笔试题-第3大题-公共最长字符串长度
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
- 【8.29】阿里巴巴2014年校招(软件测试攻城师)笔试题目
- 2014年百度研发笔试算法题1解法
- 人人网笔试题1
- 搜狗2014年笔试题-两递增数组A和B,求A[i]+B[j]中前k个最小值(Java)
- 2016年人人网笔试题
- 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,
- 交换两个数的值(不使用第三个变量)
- 腾讯2014年春季笔试题