leetcode--888.公平的糖果交换

题目描述:
在这里插入图片描述
示例1:

输入:A = [1,1], B = [2,2]
输出:[1,2]

示例2:

输入:A = [1,2], B = [2,3]
输出:[1,2]

示例3:

输入:A = [2], B = [1,3]
输出:[2,3]

思路:

这个题有意思,它就是让两个数组各交换一个值,然后看交换元素后两个数组的和是否相等


我是这样想的:首先分别计算出未交换元素时两个数组的元素值的总和(sumA和sumB)。
然后分别遍历两个数组:假如数组A的循环角标为i,数组B的循环角标为j,那么只需要在循环中找到一个i和一个j,使得sumA-A[i]+B[j]==sumB-B[j]+A[i],返回i和j对应的A[i]和B[j]即可。

java代码

class Solution {
    public int[] fairCandySwap(int[] A, int[] B) {
        int sumA=0;
        int sumB=0;
        int[] answer = new int[2];
        for(int i=0;i<A.length;i++){
            sumA+=A[i];
        }
        for(int j=0;j<B.length;j++){
            sumB+=B[j];
        }
        for(int i=0;i<A.length;i++){
            for(int j=0;j<B.length;j++){
                if(sumA-A[i]+B[j]==sumB-B[j]+A[i]){
                    answer[0]=A[i];
                    answer[1]=B[j];
                    break;
                }
            }
        }
        return answer;
    }
}

在这里插入图片描述

发布了73 篇原创文章 · 获赞 7 · 访问量 3577

猜你喜欢

转载自blog.csdn.net/weixin_43801718/article/details/103408223