剑指offer 43 和为S的两个数字

来源:互联网 发布:软件项目标书 编辑:程序博客网 时间:2024/06/05 19:57

题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。

思路

一个指针start,一个指针end,如果data[start] + data[end] > S,则end -= 1,如果data[start] + data[end] < S, 则end += 1。

代码

# -*- coding:utf-8 -*-class Solution:    def FindNumbersWithSum(self, array, tsum):        # write code here        start = 0        end = len(array) - 1        while start < end:            count = array[start] + array[end]            if count < tsum:                start += 1            elif count > tsum:                end -= 1            else:                return [array[start], array[end]]        return []
原创粉丝点击