用雙指標法求解和為S的兩個數字問題

2021-10-08 05:32:04 字數 578 閱讀 1061

這題可以用暴力法,直接遍歷求解,但是雙指標法更巧妙:

因為陣列是有序的,所以可以用雙指標,指向陣列的首尾,具體步驟如下:

1.初始化:指標i指向陣列首, 指標j指向陣列尾部

2. 如果arr[i] + arr[j] == sum , 說明是可能解

3. 否則如果arr[i] + arr[j] > sum, 說明和太大,所以–j

4. 否則如果arr[i] + arr[j] < sum, 說明和太小,所以++i

**如下:

using system.collections.generic;

class

solution

right--

; left++;}

else

if(array[left]

+array[right]

if(i***ist)

return ret;

}}

和為S的兩個數字

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸入 每個測試案例包括兩行 第一行包含乙個整數n和k,n表示陣列中的元素個數,k表示兩數之和。其中1 n 10 6,k為int 第二行包含n個整數,每個陣列均為i...

和為S的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。class solution public vectorfindnumberswithsum vectorarray,i...

和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。include using namespace std bool twonumberwithsum int data,i...