1. 程式人生 > >輸一個遞增排序的陣列和一個數字 s,在陣列中查詢兩個數使得它們的 和正好是 s

輸一個遞增排序的陣列和一個數字 s,在陣列中查詢兩個數使得它們的 和正好是 s

面試題:和為 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;
				}
		}
	}