LeetCode 822. 翻转卡片游戏

Java实现 LeetCode 822 翻转卡片游戏(暴力) 822. 翻转卡片游戏 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们可以先翻转任意张卡片,然后选择其中一张卡片。 如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。 哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。 其中, fronts[i] 和 backs[i] 分别代表第 i 张卡片的正面和背面的数字。 如果我们通过翻转卡片来交换正面与背面上的数,那么当 阅读详情

在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。

我们可以先翻转任意张卡片,然后选择其中一张卡片。

如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。

哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。

其中, fronts[i] 和 backs[i] 分别代表第 i 张卡片的正面和背面的数字。

如果我们通过翻转卡片来交换正面与背面上的数,那么当初在正面的数就变成背面的数,背面的数就变成正面的数。

示例:

输入:fronts = [1,2,4,4,7], backs = [1,3,4,1,3]
输出:2
解释:假设我们翻转第二张卡片,那么在正面的数变成了 [1,3,4,4,7] , 背面的数变成了 [1,2,4,1,3]。
接着我们选择第二张卡片,因为现在该卡片的背面的数是 2,2 与任意卡片上正面的数都不同,所以 2 就是我们想要的数字。

提示:

  1. 1 <= fronts.length == backs.length <= 1000
  2. 1 <= fronts[i] <= 2000
  3. 1 <= backs[i] <= 2000

 

思路:

        给定两个数组 fronts 和 backs,我们需要找到满足题目要求的最小值。其中,我们可以利用哈希集来存储正反数字相同的卡片。首先遍历数组 fronts 和 backs,如果 fronts[i] == backs[i],那么该数字是一个满足要求的数字,我们将其加入到哈希集 same 中。

        如果没有相同正反数字的卡片,我们可以简单地返回 fronts 和 backs 数组中的最小值。

        如果存在相同数字的卡片,我们需要遍历所有数字,找到满足条件的最小值。我们遍历 fronts 数组,如果该数字小于当前记录的最小值 res,并且不在哈希集 same 中,就更新 res 的值。然后再遍历 backs 数组,同样地更新 res。

        最后,如果 res 的值仍然是初始化的最大整数值(即没有找到满足条件的最小值),那么返回 0,否则返回 res。

代码注释如下:

这里两种求最小值方法:

C++中vector:

 int b_min = *std::min_element(begin(backs),end(backs));
 int f_min = *std::min_element(begin(fronts),end(fronts));

java一维数组: 

     int b_min = Arrays.stream(backs).min().getAsInt();
     int f_min = Arrays.stream(fronts).min().getAsInt();

C++:

class Solution {
public:
    int flipgame(vector<int>& fronts, vector<int>& backs) {
        //哈希集存储正反数字相同卡片
        unordered_set<int> same;
        int n = fronts.size();
        //遍历存储
        for (int i = 0; i < n; ++i) {
            if (fronts[i] == backs[i]) {
                same.insert(fronts[i]);
            }
        }
        //无相同正反数字卡片
        //取最小值
        if(!same.size()){
            int b_min = *std::min_element(begin(backs),end(backs));
            int f_min = *std::min_element(begin(fronts),end(fronts));
            return min(b_min,f_min);
        }
        //有相同数字卡片
        //遍历所有数字,找到最小值
        int res = INT_MAX;
        for (int &x : fronts) {
            if (x < res && same.count(x) == 0) {
                res = x;
            }
        }
        for (int &x : backs) {
            if (x < res && same.count(x) == 0) {
                res = x;
            }
        }
        return res == INT_MAX ? 0 : res;
    }
};

JAVA:

class Solution {
    public int flipgame(int[] fronts, int[] backs) {
        //哈希集存储正反数字相同卡片
        Set<Integer> same = new HashSet();
        int n = fronts.length;
        //遍历存储
        for (int i = 0; i < n; ++i) {
            if (fronts[i] == backs[i]) {
                same.add(fronts[i]);
            }
        }
        //无相同正反数字卡片
        //取最小值
        if(same.size()==0){
            int b_min = Arrays.stream(backs).min().getAsInt();
            int f_min = Arrays.stream(fronts).min().getAsInt();
            return Math.min(b_min,f_min);
        }
        //有相同数字卡片
        //遍历所有数字,找到最小值
        int res = Integer.MAX_VALUE;
        for (int x : fronts) {
            if (x < res && !same.contains(x)) {
                res = x;
            }
        }
        for (int x : backs) {
            if (x < res && !same.contains(x)) {
                res = x;
            }
        }
        return res == Integer.MAX_VALUE ? 0 : res;
    }
}

性能测试软件(LR12) 具体汉化(中文)方法 LoadRunner 12 的下载及安装详细过程请参考:https://blog.csdn.net/xiao66guo/article/details/105465854 1、在LoadRunner文件中找到 Setup.exe 可执行文件,并以管理员的身份运行: C盘 —> Temp—>HP LoadRunner 12.02 Community Edition—> D... 阅读详情

相关推荐

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8124

leetcode | go | 第822题 | 翻转卡片游戏

【代码】leetcode | go | 第822题 | 翻转卡片游戏。

iCling的博客 485

autoware 激光-相机联合标定

autoware进行激光-相机联合标定 ~~~ 刚开始进行激光-相机联合标定的时候,出现了不少问题,在此记录一下整体标定流程,以防忘记。在此,特别感谢佳明师弟,在录制数据集时提供的帮助。 ~~~ 0.系统配置: Ubuntu18.04系统 ROS Melodic opencv 3.2.0 vlp-16 一.安装autoware 这部分网上教程挺多的,但我在编译的过程中仍存在不少bug,唉~_~。 二.安装calibration_camera_lidar,从a...

nuo112的博客 1万+

【力扣每日一题 0802】LEETCODE 822. 翻转卡片游戏

分析一下题意不难发现,如果某张牌正反面数字相同,那么这个数一定不行,否则正反面的数字都有可能,因为排除掉正反面数字相同的牌后,如果其他牌即使出现了某个数,由于正反面不同,翻转一下就可以避开重复了。题意概述:每张牌正反面各有一个数,现在给若干张牌,可以任意翻转卡牌(所以可以理解为不区分正反面),要求找出一个背面的数和所有卡牌正面的数字都不相同,输出满足这一条件的最小的数,不能的话输出0。所以只需要对正反面相同的牌做个特殊处理,标记出不可能的数字。正反面不同的数字先记录下来,再找出其中的满足条件的最小值即可。

weixin_54010404的博客 413

抖音直播间人气接口算法 抖音协议

抖音直播间人气接口算法 抖音协议 抖音算法

Q44804487的博客 1万+

LLC谐振变换器设计实战:从工作原理到参数设计与调试

开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验

weixin_34129696的博客 563

Leetcode 822. 翻转卡片游戏 C++

Leetcode 822. 翻转卡片游戏 题目 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们可以先翻转任意张卡片,然后选择其中一张卡片。 如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。 哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。 其中, fronts[i] 和 backs[i] 分别代表第 i 张卡片的正面和背面的数字。 如果我们通过翻转卡片来交换

weixin_43750513的博客 1421

电动汽车整车控制器 UDS诊断功能开发调试优化方法

摘要:通过某电动汽车VCU开发过程中,UDS诊断功能的调试,发现一些测试中存在的问题,比如覆盖度不够、效率低下等,提出了相应的优化方法,并经过测试验证其可行性,此方法亦可推广应用至BMS、HCM等其他控制器的UDS诊断开发调试过程中。希望能给相关技术人员带来参考和帮助。

qq_43011586的博客 2143

JAVA卡片中找到最小数_Java实现 LeetCode 822 翻转卡片游戏(暴力)

822. 翻转卡片游戏在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。我们可以先翻转任意张卡片,然后选择其中一张卡片。如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。其中, fronts[i] 和 backs...

weixin_28932927的博客 389

AgentScope实战训练营:从零搭建一个完整的A2A Agent应用

2024年4月,Google在Google Cloud Next大会上正式提出了A2A(Agent-to-Agent)协议,这是一个开放协议,旨在让不同的AI Agent之间能够像微服务一样相互发现、相互调用。通俗地讲:A2A协议就是AI Agent世界的HTTP协议——有了它,一个Agent可以把自己的能力以标准化的方式暴露出去,另一个Agent可以无缝地发现并调用它。本文将基于阿里巴巴开源的(Apache 2.0协议),手把手带你从零搭建一个完整的A2A Agent应用。

program哲学 566

量化交易 米筐 多因子合成(回测中使用)

多因子合成 1、因子合成 将一些相关(高、低)的因子合成一个因子 方法: 使用PCA方式(使用于较强相关性) 2、核心代码 将因子 inc_revenue_ttm 和 operating_revenue_growth_ratio_ttm 合成为一个因子 inc_operating from sklearn.decomposition import PCA pca = PCA(n_components=1) # 因子合并 fund['inc_operating'] = pca.fit_transform(fu

廷益_飞鸟的博客 1062

leetcode 822. Card Flipping Game 翻转卡片游戏

邹九的个人博客 196

YOLOv5 模型剪枝与量化实战:从训练到部署,轻量化模型性能不减(2026终极指南)

YOLOv5 轻量化三部曲稀疏训练:让模型学会“偷懒”,把不用的神经元权重压到 0。手术剪枝:切掉那些权重为 0 的神经元,物理减小模型体积。量化压缩:把剩下的神经元从“高精度浮点”变成“低精度整数”,进一步压榨速度。这套组合拳是 2026 年边缘 AI 部署的标准工业流程。虽然 YOLOv8/v10 原生支持更好的导出,但 YOLOv5 的这套手动控制流程能让你更深刻地理解模型结构,并在极端资源受限的场景下(如 MCU、超低端手机)挖掘出最后的性能潜力。最后建议如果你的项目时间紧迫,优先尝试。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 369

【力扣】822. 翻转卡片游戏

【力扣】822. 翻转卡片游戏

qq_45256357的博客 777

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

卡牌战斗系统Java_Java实现 LeetCode 822 翻转卡片游戏(暴力)

822. 翻转卡片游戏在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。我们可以先翻转任意张卡片,然后选择其中一张卡片。如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。其中, fronts[i] 和 backs...

weixin_29577885的博客 447

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LeetCode 822. 翻转卡片游戏(哈希)

文章目录1. 题目2. 解题 1. 题目 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们可以先翻转任意张卡片,然后选择其中一张卡片。 如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。 哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。 其中, fronts[i] 和 backs[i] 分别代表第 i 张卡片的正面和背面的数字。 如果我们通过翻转卡片来交换正面与

Michael是个半路程序员 1067

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【C语言刷LeetCode】822 翻转卡片游戏(M)

解释:假设我们翻转第二张卡片,那么在正面的数变成了 [1,3,4,4,7] , 背面的数变成了 [1,2,4,1,3]。接着我们选择第二张卡片,因为现在该卡片的背面的数是 2,2 与任意卡片上正面的数都不同,所以 2 就是我们想要的数字。如果我们通过翻转卡片来交换正面与背面上的数,那么当初在正面的数就变成背面的数,背面的数就变成正面的数。如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。1)明确一个重要观念,双面一致的数字一定不是我们想要的数字。......

kinbo88的专栏 580

​LeetCode解法汇总822. 翻转卡片游戏

接着我们选择第二张卡片,因为现在该卡片的背面的数是 2,2 与任意卡片上正面的数都不同,所以 2 就是我们想要的数字。如果我们通过翻转卡片来交换正面与背面上的数,那么当初在正面的数就变成背面的数,背面的数就变成正面的数。* 然后遍历,如果正面在set中的,那么就取反面,如果反面在set中,则取正面,都有则都不取。张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。如果选中的那张卡片背面的数字。张卡片的正面和背面的数字。

分享+记录 581

LeetCode每日一题822. 翻转卡片游戏

接着我们选择第二张卡片,因为现在该卡片的背面的数是 2,2 与任意卡片上正面的数都不同,所以 2 就是我们想要的数字。如果我们通过翻转卡片来交换正面与背面上的数,那么当初在正面的数就变成背面的数,背面的数就变成正面的数。哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出。张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。如果选中的那张卡片背面的数字。张卡片的正面和背面的数字。

weixin_61810048的博客 625

Leetcode-数学-822. 翻转卡片游戏

题目: 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们可以先翻转任意张卡片,然后选择其中一张卡片。 如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。 哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。 其中, fronts[i]和backs[i]分别代表第i张卡片的正面和背面的数字。 如果我们通过翻转卡片来交换正面与背面上的数,那么当初在...

一只菜鸟夹 1007

[Swift]LeetCode822. 翻转卡片游戏 | Card Flipping Game

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/stren...

weixin_30727835的博客 349

翻转卡片游戏【力扣822】

如果卡片上正面和背面的数字相同,都为x,那么x一定不符合要求,将这些数都记录到哈希表hash中。剩下的卡片正反面数字不相同,那么不在hash中的数字中的最小数min一定是答案。因为若min跟现在front数组中的某些数相同(这个数不会是hash中的数),则将那些个相同的卡片正反面兑换(这些卡片一定正反面数据不同),就可以实现min与front数组中的所有数都不相同。

qq_44228301的博客 609

Leetcode 822. 翻转卡片游戏 (博弈论)

题目链接 做法:最近学了一波SG函数,想在LC上找几个练练手,发现都是思维级别的博弈论 用不到SG函数。 其实就是当一张卡片的正面和反面都是一样的时候 这个值就不能被当作答案,否则 其他数都可以被当作答案。取最小即可。 代码: class Solution { public: int flipgame(vector<int>& fronts, vector<int>& backs) { map<int,int>mp; for(.

ccsu_deer 1772
上一篇: 使用std::clamp函数判断圆和矩形是否重叠
下一篇: 二叉树前序、中序、后序遍历(递归、非递归)
天皓Oo
博客等级 码龄5年 337粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值