题解 | #和为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 []
顺丰集团工作强度 379人发布