輸一個遞增排序的陣列和一個數字 s,在陣列中查詢兩個數使得它們的 和正好是 s
阿新 • • 發佈:2019-02-14
面試題:和為 s 的兩個數字 VS 和為 s 的連續正數序列
題目一:輸一個遞增排序的陣列和一個數字 s,在陣列中查詢兩個數使得它們的
和正好是 s。如果有多對數字的和等於 s,輸出任意一對即可。例如:輸入陣列
{1,2,4,7,11,15}和數字為 15.輸出 4 和 11.
思路:不考慮時間複雜度的話
因為是遞增陣列,則定位起始位置,start以及end
若兩個起始位置各自對應的陣列元素的和小於指定的數,則start+1
否則end-1
題目一:輸一個遞增排序的陣列和一個數字 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; } } }