题解 | #和为S的两个数字#
和为S的两个数字
https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param array int整型一维数组 # @param sum int整型 # @return int整型一维数组 # class Solution: def FindNumbersWithSum(self , array: List[int], sum: int) -> List[int]: # write code here # 第一遍遍历,记下sum-arry的值 # 第二遍,查找 # sub = [] # for i in range(len(array)): # if array[i] in sub : # return [sum - array[i], array[i]] # sub.append( sum - array[i]) # return [] # 上面的答案超时了 # 注意题目条件:升序数组 # 双指针,一个从前往后,一个从后往前 if len(array)<=1: return [] i = 0 j = len(array)-1 while i < j: temp = array[i] + array[j] if temp == sum: return [ array[i], array[j]] elif temp < sum: i += 1 elif temp > sum: j -= 1 return []