`
EmmaZhao
  • 浏览: 32274 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

名企面试100题_14

 
阅读更多
第14题(数组):

题目:输入一个已经按升序排序过的数组和一个数字,

在数组中查找两个数,使得它们的和正好是输入的那个数字。

要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。

例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

思路:
package cn.emma.interview_14;

public class GetDivision {
	public static void getDivision(int[] a, int n){
		int i,j;
		for(i = 0,j=a.length-1;i<j;){
			while((a[i] < n - a[j]) && (i < j)){
				i++;
			}
			if(a[i] + a[j] == n){
				System.out.println(a[i] + " " + a[j]);
				break;
			}
			else{
				j--;
			}
		}
		if(i >= j){
			System.out.println("无解。");
		}
	}

	public static void main(String[] args) {
		int[] a = {1,2,3,4,5,6,7,8,9,10};
		getDivision(a, 11);
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics