leetcode刷题——交换和

    一、题目描述

    给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。

    返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-swap-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    二、题目分析

    sum(arr1) - sum(arr2) = 2 * delta

    计算(arr1 - delta) 是否在arr2中

    三、代码实现

import numpy as np
class Solution:
    def findSwapValues(self, array1: List[int], array2: List[int]) -> List[int]:
        res = []
        double_delta = sum(array1) - sum(array2)
        if not double_delta & 1:
#            target_dict = dict(zip(np.array(array1) - (double_delta >> 1), array1))
            target_dict = {}
            target_dict = target_dict.fromkeys(array1, 1)
            for num in array2:
#                print('{}_{}'.format(num, target_dict.get(num + (double_delta >> 1), 2)))
                if target_dict.get(num + (double_delta >> 1), 2) & 1:
                    res = [num + (double_delta >> 1), num]
                    break 
        return res

     四、解题结果

leetcode刷题——交换和_第1张图片

 

你可能感兴趣的:(Python,leetcode,算法)