【演算法】輸入一個已經按升序排過的陣列和數字,在陣列中查詢兩個數字,使得它們的和正好是輸入那個數字。
題目:輸入一個已經按升序排過的陣列和數字,
在陣列中查詢兩個,使得它們的和正好是輸入那個數字。
要求時間複雜度是 O(n)。
如果有多對數字的和等於輸入,出任意一即可例如輸入陣列 1、2、4、7、11 、15 和數字 15 。由於 4+11=,因此輸出 4 和 11 。
#include<stdio.h>
void findTwoNum(int a[], int n, int dest)
{
int *begin = a,*end = a+n-1;
int sum = *begin + *end;
while(sum != dest && begin < end)
{
if(sum < dest)
sum = *(++begin) + *end;
else
sum = *begin + *(--end);
}
if(sum == dest)
printf("%d,%d\n",*begin,*end);
}
int main()//測試程式
{
int a[]={5,7,8,9,11,16,34};
findTwoNum(a, 7, 23);
return 0;
}
相關文章
- 有一個已經排好序的陣列。現輸入一個數,要求按原來的規律將它插入陣列中。陣列
- 輸入一個整數陣列,輸出奇偶數相間排列的陣列陣列
- python之矩陣相加:提示使用者輸入矩陣的行數n,再提示使用者輸入矩陣的列數m,接下來,提示使用者輸入 2*n*m 個數字(每次輸入 一個數字)。輸出 C=A+B。Python矩陣
- 每日一練(24):在排序陣列中查詢數字排序陣列
- 輸入一個3,輸出March,輸入一個數字月份,然後對應輸出相應的英文表示,用指標陣列完成指標陣列
- 計算陣列中每個數字出現的次數陣列
- [Python手撕]兩個升序陣列的中位數Python陣列
- 求陣列中是否存在滿足特定和的兩個數字(python & Js)陣列PythonJS
- 給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。陣列
- 每日一題(一):找出兩個陣列中共有的數字每日一題陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 陣列中重複的數字陣列
- 在陣列中尋找和為指定值的兩個數陣列
- 如何查詢總和等於給定數字的整數陣列中的所有對陣列
- 兩個有序陣列的中位數陣列
- C++通過輸入數來確定一個陣列的動態大小C++陣列
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- 演算法-兩個排序陣列的中位數演算法排序陣列
- 寫一個函式,輸入一個4位數字,要求輸出這4個數字字元函式字元
- C++查詢一個數是否在陣列中find用法C++陣列
- 對陣列中的數字 1 和 2 進行排序,使得數字 1、2 分別位於前、後部分陣列排序
- 在一個給定的陣列中查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍, 如果是,則返回最大元素的索引,否則返回-1。陣列索引
- 陣列中出現次數超過一半的數字陣列
- JS只能輸入數字,數字和字母等的正規表示式JS
- 面試題解:輸入一個數A,找到大於A的一個最小數B,且B中不存在連續相等的兩個數字面試題
- 輸入一個三位數,輸出它各個數位之和
- 一個猜數字輸贏的小遊戲遊戲
- input 輸入框只能輸入數字
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 48 陣列中出現次數超過一半的數字陣列
- Vue只能輸入數字Vue
- 數字陣列最值,總和,平均,中位數 未完待續陣列
- 尋找兩個有序陣列的中位數陣列
- 4. 兩個排序陣列的中位數排序陣列
- 陣列-07. 求一批整數中出現最多的個位數字(20)陣列
- 重排陣列;及消失的數字分析陣列
- 給定一個按非遞減順序排序的整數陣列 A,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。排序陣列