找出排序陣列中和為給定值的兩個數字

2021-07-03 05:45:33 字數 458 閱讀 5001

題目:輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。

例如:a=, sum = 15,輸出6,9.

思路:

因為陣列是有序的,因此我們可設兩個指標left,right,分別從頭和從尾部遍歷,若a[left] + a[right] > sum,則right–;若a[left] + a[right] < sum,則left++;否則我們就找到了所需的兩個數字,分別為a[left]和a[right]。

void findtwonumber(int a,int n,int

sum)

else

if(a[left] + a[right] < sum)

else

}cout<" "

<}

找出陣列中和為給定值的方法

這個題某次面試中面試官問到了,在leetcode上也有 題目描述 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 ...

100題 在排序陣列中查詢和為給定值的兩個數

在排序陣列中查詢和為給定值的兩個數 include using namespace std bool findnum int data,unsigned int length,int sum,int n1,int n2 int ahead length 1 int behind 0 while ah...

給定兩個有序陣列,找出合併之後的陣列中位數

中位數定義 假如乙個陣列的長度len為偶數,那麼中位數為第 len 2 個數 如果len為奇數,那麼中位數為第len 2 1個數。比如 arr 1,2,3,4,5 中位數為3 arr 2,3,4,5 中位數為3。給定兩個遞增排序陣列,請設計一種高效演算法求出兩個陣列的中位數。比如 a 1,2,3,4...