&esmp;&esmp;輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。
輸出描述:
&esmp;&esmp;對應每個測試案例,輸出兩個數,小的先輸出。
&esmp;&esmp;首先,先考慮在遞增排序的陣列中找到兩個和為s的數字。這個思路就較為簡單,利用二分方法,分別從頭尾向中間檢索,如果頭尾相加大於s,那麼就將尾指標左移,如果頭尾相加小於s,那麼就將右指標右移。可是當有多組結果的時候,如果保留乘積最小的一組呢?我使用的方法是將找到的第一對數字對存入vector中,後續找到的數字對的乘積依次與已經存在的相比較,如果更小就替換。
&esmp;&esmp;詳細**如下。
class solution
vector
::iterator p, q;
p = array.begin();
q = array.end()-1;
int chengji = 0;
while(p < q)
else
if (temp == sum && chengji != 0)
++p;
}if (temp < sum)
if (temp > sum)
}return answer;
}};
劍指offer 和為S的兩個數字
題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。ps 拋物線開口向下,找到的第一組 相差最大的 就是乘積最小的,不需要比較 class solution in...
劍指offer 和為s的兩個數字
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。雙指標,乙個從左向右遍歷,乙個從右向左遍歷。coding utf 8 class solution deffindnum...
劍指offer 和為S的兩個數字
題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。思路 遍歷陣列,先找到第乙個數dat a1 data1 data 1,然後再在陣列中找另外乙個數sum dat...