题解 | #和为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 []

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务