題目:輸入乙個已經按公升序排序過的陣列和乙個數字,
在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。
要求時間複雜度是o(n)。
如果有多對數字的和等於輸入的數字,輸出任意一對即可。
例如輸入陣列1、2、4、7、11、15和數字15。由於4+11=15,因此輸出4和11。
**如下:
#includeusing namespace std;
/*start往上增長,end往下遞減。
1.出現data[start] + data[end] > sum的情況是建立在data[start - 1] + data[end] < sum的情況,不包括初始值,
所以在此基礎上必定為 data[start - 1] + data[end - 1] < sum,所以data[start] + data[end] == sum才有可能
2.出現data[start] + data[end] < sum的情況,如果start不變,小於end的下標的資料都不能滿足,只能start++
3.*/
void findtwoofsum(int sum,int *data,int length)
cout<<"the numbers are not exist!!"<}int main()
; findtwoofsum(15,data,6);
return 0;
}
面試題 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
面試題1 兩數之和 1
題目 給定乙個整型陣列,能否找到找出其中的兩個數使其和為某個指定的值?這個陣列是無序的 直接實現 暴力解決 暴力破解,o n 2 的時間複雜度 func hassum arr int,target int bool return false 書中給出的核心思想是 先將無序的進行排序 從小到大 然後首...
leetcode面試題15 三數之和
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 題解 本題實際上...