思路,從左和右同時遍歷陣列,如果左右相加大於n,則說明右邊的值偏大,則右指標左移;如果比n小,則左指標右移;總共對陣列只需要遍歷一遍。
/*在乙個公升序陣列中查詢兩個數,使得他們的和為已知數n,時間複雜度o(n)*/
/*返回距離最近的一對*/
int* find(int *array , int len , int n)
if( array[left] != array[left+1] ) ++left;
else if( array[right] != array[right-1] )--right;
else }}
if( mindis == len )
re[0] = array[maxleft];
re[1] = array[minright];
return re;
}
在排序陣列中查詢和為給定值的兩個數字
14 題目 輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。思路 由於陣列為公升序,因...
在排序陣列中查詢和為定值的兩個元素
題目 已知乙個已經按公升序排好序的陣列,現在輸入乙個數值sum,在陣列中查詢兩個數,使得這兩個數的和正好是輸入的sum,列印出這兩個數,如果存在多對這樣的數,依次列印出來。如 array 輸入sum 28,那麼列印出 8,20 10,18 演算法思想1 最傻瓜的演算法,先在陣列中固定乙個值,然後依次...
14 在排序陣列中查詢和為給定值的兩個數字
題目 輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。分析 如果我們不考慮時間複雜度,...