输一个递增排序的数组和一个数字 s,在数组中查找两个数使得它们的 和正好是 s

来源:互联网 发布:淘宝男士机械手表 编辑:程序博客网 时间:2024/05/16 17:04
面试题:和为 s 的两个数字 VS 和为 s 的连续正数序列
题目一:输一个递增排序的数组和一个数字 s,在数组中查找两个数使得它们的
和正好是 s。如果有多对数字的和等于 s,输出任意一对即可。例如:输入数组
{1,2,4,7,11,15}和数字为 15.输出 4 和 11.
思路:不考虑时间复杂度的话
因为是递增数组,则定位起始位置,start以及end
若两个起始位置各自对应的数组元素的和小于指定的数,则start+1
否则end-1
public class ArrayTwoElementSumEqualNum_1 {public static void main(String[] args){int[] a={1,2,4,7,11,15};find(a,15);}public static void find(int[] arr,int num)throws RuntimeException{if(num<=arr[0]||num>=arr[arr.length-1]||arr.length<2||arr==null)System.out.println("输入错误");int start=0,end=arr.length-1;while(start<end){int temp=arr[start]+arr[end];if(temp>num)end--;if(temp<num)start++;if(temp==num){System.out.println("这两个元素是"+arr[start]+"和"+arr[end]);break;}}}

阅读全文
0 0
原创粉丝点击