劍指offer 和為S的兩個數字

2021-08-07 08:42:09 字數 700 閱讀 1725

&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...