劍指Offer之和為S的二個數字

2021-10-05 19:18:57 字數 781 閱讀 1364

題目:

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的
思路:利用二個指標,乙個指向陣列頭部left,乙個指向陣列尾部right,left往後走,right往前走,對left和right位置上的數求和sum

如果sum>target;right--

如果sumfindnumberswithsum(int array,int sum)

int left=0,right=array.length-1;

while(leftsum)else if(result(arrays.aslist(array[left],array[right]));}}

return new arraylist();

}變形題:求和為s的連續正數序列

題目:

輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。

序列內的數字由小到大排列,不同序列按照首個數字從小到大排列

思路:可利用指標i,j來維持乙個視窗,開始i,j都指向第乙個元素,i,j指標都向右移動,當sum大於target,i指標向右,當sumret=new arraylist<>();

while(i<=target/2)else

ret.add(arr);

sum-=i;

i++;}}

return ret.toarray(new int[ret.size()]);

}

劍指offer之和為S的兩個數字

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出 對應每個測試案例,輸出兩個數,小的先輸出。思路 既然陣列是排好序的,可以採用左右夾逼的做法,找出和為s的兩個數 然後,第一組和為s的兩個數相乘肯定最小,因為...

劍指Offer之和為S的兩個數字

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

劍指offer之和為S的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。對應每個測試案例,輸出兩個數,小的先輸出。首先定義兩個指標,第乙個指向首字母,第二個指向尾字母,然後開始判斷,如果相等,就進行返回,如果大於,第二個指標向左移動一位,如果小...