博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
人人网2014年笔试题【两个数之和等于第三个数】
阅读量:5325 次
发布时间:2019-06-14

本文共 1037 字,大约阅读时间需要 3 分钟。


一、灵感来源

2013-09-17 | 题目来源 

二、题目

         人人网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
total){ pT--; continue; } if(temp==total) { flag = true; break; } } if(flag){ System.out.println(array[pH] + "+" + array[pT] + "=" + total); }else{ System.out.println("未找到"); } }}

四、备用

 

         慢慢尝试使用其它方法实现。如果有什么好的方法,欢迎大家共同探讨

 

转载于:https://www.cnblogs.com/suncoolcat/p/3331158.html

你可能感兴趣的文章
简单工厂模式
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>
Java 实践:生产者与消费者
查看>>
[转]IOCP--Socket IO模型终结篇
查看>>
js 获取视频的第一帧
查看>>
各种正则验证
查看>>
观察者模式(Observer)
查看>>
python中numpy.r_和numpy.c_
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
freebsd 实现 tab 命令 补全 命令 提示
查看>>
struts1和struts2的区别
查看>>