leetcode 888. 公平的糖果交换 比较set和map的速度

求和Sa,Sb
找两颗差值 = (Sa-Sb)/2的
set

class Solution {
public:
    vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
        int Sa = 0;
        int Sb = 0;
        set<int> setb;
        for( auto i:A ){
            Sa += i;
        }
        for( auto i:B ){
            Sb += i;
            setb.insert(i);
        }
        int sub = Sa - Sb;
        sub /= 2;
        for( auto i:A ){
            if( setb.count( i-sub )== 1 ){
                return { i,i-sub };
            }
        }
        return {};
    }
};

在这里插入图片描述

map

class Solution {
public:
    vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
        int Sa = 0;
        int Sb = 0;
        map<int,int> setb;
        for( auto i:A ){
            Sa += i;
        }
        for( auto i:B ){
            Sb += i;
            setb[i] = 1;
        }
        int sub = Sa - Sb;
        sub /= 2;
        for( auto i:A ){
            if( setb[ i-sub ] == 1 ){
                return { i,i-sub };
            }
        }
        return {};
    }
};

在这里插入图片描述

似乎一样快,但是map更占内存

发布了286 篇原创文章 · 获赞 57 · 访问量 324万+

猜你喜欢

转载自blog.csdn.net/L1558198727/article/details/102887959