題目:
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。
示例 1:
輸入:nums = [2,7,11,15], target = 9
輸出:[2,7] 或者 [7,2]
示例 2:
輸入:nums = [10,26,30,31,47,60], target = 40
輸出:[10,30] 或者 [30,10]
有序陣列首先想到利用雙指標
思路:1、 hashset,遍歷陣列,判斷set中是否已經存在目標值target - num[i],沒有就存進去。
2、 由於陣列有序,使用首尾雙指標,向中間移動。①nums[i] + nums[j] == target: 找到一對,直接返回;②nums[i] + nums[j] < target: , 保留 nums[j], i 加 1,向右邊移動;③nums[i] + nums[j] > target:保留 nums[i], j 減 1,向左邊移動。
思路1 時間複雜度o(n),空間複雜度o(n)
思路2 時間複雜度o(n),空間複雜度o(1)class
solution
setset =
newhashset
();for
(int num : nums);}
else
}return
newint[0
];}}
class
solution
int i =0;
int j = nums.length -1;
int[
] result =
newint[2
];while
(i < j)
else
if(nums[i]
+ nums[j]
< target)
else
}return
newint[0
];}}
《劍指offer》 57 和為S的數字
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。先遍歷每個元素,在做差,看看差值在不在裡面,因為陣列是排序過的,所以乘積較小的肯定就是離得最遠的,python 的話還是很方便的 coding utf 8 class so...
劍指offer 57 和為S的數字
和為 s 的連續正整數序列 輸入乙個陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s 如果有多對數字的和等於 s 則輸出任意一對即可 例如 輸入陣列 和數字 15。由於 4 11 15 因此 輸出 4 和 11 排序 利用兩個指標 left right class solution 輸入乙...
劍指offer 57 和為S的兩個數
題目一 這道題題目為 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。解題思路分為三個步驟 1 對於已經排好序的陣列,先在陣列裡隨機選擇兩個數字,如果它們的和正好等於s,則輸出這兩個數字。2 如果隨機選擇的兩個數字和小於s,可...