LeetCode -- 822. 翻转卡片游戏

 

本题中,可以发现性质:若卡片正反面相同,则一定不会作为答案;

只要其不在正反面相同的卡片集合中就可以作为答案, 选答案最小的即可。

 

复制代码
c ++ 
class Solution {
public:
    int flipgame(vector<int>& fronts, vector<int>& backs) {
        unordered_set<int> s;

        for(int i = 0; i < fronts.size(); i ++ ) {
            if(fronts[i] == backs[i]) {
                s.insert(fronts[i]);
            }
        }

        int res = 1e8;
        for(auto it : fronts) {
            if(!s.count(it)) {
                res = min(res, it);
            }
        }
        for(auto it : backs) {
            if(!s.count(it)) {
                res = min(res, it);
            }
        }

        if(res == 1e8) return 0;
        return res;
        
    }
};
复制代码

 

复制代码
python
class Solution:
    def flipgame(self, fronts: List[int], backs: List[int]) -> int:
        s = list()
        for i, j in zip(fronts, backs):
            if i == j and s.count(i) == 0:
                s.append(i)
        
        res = 1e8
        for i in fronts:
            if s.count(i) == 0:
                res = min(res, i)

        for i in backs:
            if s.count(i) == 0:
                res = min(res, i)
        if res == 1e8:
            return 0
        return res
复制代码

 

复制代码
java
class Solution {
    public int flipgame(int[] fronts, int[] backs) {
        Set<Integer> s = new HashSet<>();
        for(int i = 0; i < fronts.length; i ++ ) {
            if(fronts[i] == backs[i]) {
                s.add(fronts[i]);
            }
        }

        int res = 10000;
        for(int it : fronts) {
            if(!s.contains(it)) {
                res = Math.min(res, it);
            }
        }

        for(int it : backs) {
            if(!s.contains(it)) {
                res = Math.min(res, it);
            }
        }

        if(res == 10000) return 0;
        return res;
    }
}
复制代码

 

复制代码
golang
func flipgame(fronts []int, backs []int) int {
    s := make(map[int]int, 1010)
    n := len(fronts)

    for i := 0; i < n; i ++ {
        if fronts[i] == backs[i] {
            s[fronts[i]] ++ 
        }
    }

    res := 10000
    for i := 0; i < n; i ++ {
        if s[fronts[i]] == 0 {
            if res > fronts[i] {
                res = fronts[i]
            }
        }
    }

    for i := 0; i < n; i ++ {
        if s[backs[i]] == 0 {
            if res > backs[i] {
                res = backs[i]
            }
        }
    }

    if res == 10000 {
        return 0
    }
    return res
}
复制代码

 

复制代码
js
var flipgame = function(fronts, backs) {
    let s = new Set();
    for(let i = 0; i < fronts.length; i ++ ) {
        if(fronts[i] == backs[i]) {
            s.add(fronts[i]);
        }
    }

    let res = 10000
    for(let i of fronts) {
        if(!s.has(i)) {
            res = Math.min(res, i);
        }
    }

    for(let i of backs) {
        if(!s.has(i)) {
            res = Math.min(res, i);
        }
    }

    if(res == 10000) return 0;
    return res;

}; 
复制代码

 

posted @   深渊之巅  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示