首页 > 其他分享 >leetcode 888. 公平的糖果交换 比较set和map的速度

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

时间:2023-02-21 19:07:34浏览次数:31  
标签:map set sub setb int auto 888 Sb Sa

求和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 {};
    }
};

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

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 {};
    }
};

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

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

标签:map,set,sub,setb,int,auto,888,Sb,Sa
From: https://blog.51cto.com/liyunhao/6077013

相关文章