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更佔內存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章