美文网首页
610. Two Sum - Difference equals

610. Two Sum - Difference equals

作者: 鸭蛋蛋_8441 | 来源:发表于2019-06-18 08:32 被阅读0次

    Description

    Given an array of integers, find two numbers that their difference equals to a target value.

    where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are NOT zero-based.

    It's guaranteed there is only one available solution

    Example

    Example 1:

    Input: nums = [2, 7, 15, 24], target = 5

    Output: [1, 2]

    Explanation:

    (7 - 2 = 5)

    Example 2:

    Input: nums = [1, 1], target = 0

    Output: [1, 2]

    Explanation:

    (1 - 1 = 0)

    思路

    看见两数与目标值可能想到双指针,但是不同于两数和的双指针,双向双指针的两数差并没有什么规律可以压缩区间,但是同向双指针在这个题中会用的比较巧妙, 因为排序后的数组是递增的, 那么一个数与后面所有数的差会越来越大, 同时与同一个数的差前面的数会小于后面的数,所以可以固定一个数的指针,然后移动其后面数的指针,直到第一个大于target,这时候后面指针保持不动,将前面数指针往后移动一位,继续寻找目标值,在寻找过程中遇到目标值则返回。

    此题的另一个难点是要返回数组的原始坐标,但是我们排序过数组之后其坐标会变化,所以需要先处理一下数组记住每个数对应的原始坐标,这里用了遍历数组然后存tuple进数组。然后对tuple数组取key进行sorted。

    还有需要注意返回的Index要求递增,就需要加一个判断。

    代码:

    相关文章

      网友评论

          本文标题:610. Two Sum - Difference equals

          本文链接:https://www.haomeiwen.com/subject/qyqxqctx.html