劍指offer 和為S的兩個數字

2021-10-06 08:27:33 字數 1032 閱讀 4241

題目:輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。

題目所給出的陣列是遞增陣列,所以我們採用雙指標,乙個指向陣列頭部,乙個指向尾部。如果頭尾陣列值相加小於sum,那麼頭指標向右移動;如果大於sum,那麼尾指標向左移動;如果相等,停止迴圈,此時的結果即為所求結果(因為相差越遠,乘積越小,所以第一次相加等於sum的首尾值即為所求值);如果直到頭尾指標相遇,即left=right依舊沒有相等的情況出現,那麼返回0。

注:當然,如果大家懷疑相差越遠,乘積越小,也可以把所有組合列出來,用乘積來判別。

採用相差越遠,乘積越小來判別的方法

vector<

int>

findnumberswithsum

(vector<

int> array,

int sum)if(

(array[left]

+array[right]

)left++

;else

right--;}

if(left>=right)

return res;

}}

採用把所有組合列出來,用乘積來判別的方法

vector<

int>

findnumberswithsum

(vector<

int> array,

int sum)if(

(array[left]

+array[right]

)left++

;else

right--;}

if(left>=right)

return rest;

else

} rest.push_back (res[cnt]

.first )

; rest.push_back (res[cnt]

.second)

;return rest;}}

}

劍指offer 和為S的兩個數字

esmp esmp 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 esmp esmp 對應每個測試案例,輸出兩個數,小的先輸出。esmp esmp 首先,先考慮在遞增排序的陣列中找到兩個和為s的數字。這個思路...

劍指offer 和為S的兩個數字

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。ps 拋物線開口向下,找到的第一組 相差最大的 就是乘積最小的,不需要比較 class solution in...

劍指offer 和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。雙指標,乙個從左向右遍歷,乙個從右向左遍歷。coding utf 8 class solution deffindnum...