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

这篇具有很好参考价值的文章主要介绍了LeetCode·每日一题·822. 翻转卡片游戏·哈希。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:小迅
链接:https://leetcode.cn/problems/card-flipping-game/solutions/2368969/ha-xi-zhu-shi-chao-ji-xiang-xi-by-xun-ge-7ivj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目

LeetCode·每日一题·822. 翻转卡片游戏·哈希,LeetCode刷题笔记,leetcode,哈希算法,算法

思路

根据题意,只要有数字满足 fronts[i]=backs[i],那么 fronts[i] 绝对不可能是答案,否则 fronts[i] 或者 backs[i] 作为背面的数字可以满足要求,取最小值作为答案。

我们可以先遍历一遍数组,找到满足 fronts[i]=backs[i] 的数字,存入哈希表 hash 中。然后再次遍历数组,找到不在 hash 中的数字,取最小值作为答案。如果所有数字都在 forbidden 中,返回 0

对于hash的实现,可以使用哈希库,当然本题数据规模比较小,可以使用数组哈希,更方便。

代码注释超级详细文章来源地址https://www.toymoban.com/news/detail-626690.html

代码


int flipgame(int* fronts, int frontsSize, int* backs, int backsSize){
    int hash[2001] = {0};//数组哈希
    for (int i = 0; i < frontsSize; ++i) {
        if (fronts[i] == backs[i]) {//加入哈希表
            ++hash[fronts[i]];
        }
    }
    int min = INT_MAX;
    for (int i = 0; i < frontsSize; ++i) {
        if (hash[fronts[i]] == 0) {//不在哈希表中的元素
            min = fmin(min, fronts[i]);//取最小值
        }
        if (hash[backs[i]] == 0) {
            min = fmin(min, backs[i]);
        }
    }
    return min == INT_MAX ? 0 : min;
}

作者:小迅
链接:https://leetcode.cn/problems/card-flipping-game/solutions/2368969/ha-xi-zhu-shi-chao-ji-xiang-xi-by-xun-ge-7ivj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

到了这里,关于LeetCode·每日一题·822. 翻转卡片游戏·哈希的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (哈希表) 1002. 查找共用字符 ——【Leetcode每日一题】

    难度:简单 给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符 ),并以数组形式返回。你可以按 任意顺序 返回答案。 示例 1: 输入:words = [“bella”,“label”,“roller”] 输出:[“e”,“l”,“l”] 示例 2: 输入:words = [“

    2024年02月08日
    浏览(60)
  • LeetCode每日一题——2682. 找出转圈游戏输家

    n  个朋友在玩游戏。这些朋友坐成一个圈,按  顺时针方向  从  1  到  n  编号。从第  i  个朋友的位置开始顺时针移动  1  步会到达第  (i + 1)  个朋友的位置( 1 = i n ),而从第  n  个朋友的位置开始顺时针移动  1  步会回到第  1  个朋友的位置。 游戏规则如下:

    2024年02月12日
    浏览(39)
  • leetcode每日一题_2682.找出转圈游戏输家

    2682.找出转圈游戏输家 题目: n 个朋友在玩游戏。这些朋友坐成一个圈,按 顺时针方向 从 1 到 n 编号。从第 i 个朋友的位置开始顺时针移动 1 步会到达第 (i + 1) 个朋友的位置(1 = i n),而从第 n 个朋友的位置开始顺时针移动 1 步会回到第 1 个朋友的位置。 游戏规则如下: 第

    2024年02月12日
    浏览(34)
  • 【Py/Java/C++三种语言详解】LeetCode每日一题240117【哈希集合】LeetCode2744、最大字符串匹配数目

    LeetCode2744、最大字符串匹配数目 给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。 如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以匹配: 字符串 words[i] 等于 words[j] 的反转字符串。 0 = i j words.length 请你返回数组 words 中的 最大 匹配数

    2024年01月18日
    浏览(55)
  • 【Leetcode每日一题】 动态规划 - 地下城游戏(难度⭐⭐⭐)(61)

    1. 题目解析 题目链接:174. 地下城游戏 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 一、状态表定义 在解决地下城游戏问题时,我们首先需要对状态进行恰当的定义。一个直观的想法是,从起点开始,到达[i, j]位置时所需的最低初始

    2024年04月29日
    浏览(43)
  • leetcode每日一题——45.跳跃游戏II(面试经典150题)

    45. 跳跃游戏 II - 力扣(LeetCode) 给定一个长度为 n 的 0 索引 整数数组 nums。 初始位置为 nums[0] 。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:   0 = j = nums[i]     i + j n 返回到达 nums[n - 1] 的最小跳跃次数

    2024年02月13日
    浏览(43)
  • 【每日一题】LCP 41. 黑白翻转棋

    在 n*m 大小的棋盘中,有黑白两种棋子,黑棋记作字母 “X”, 白棋记作字母 “O”,空余位置记作 “.”。当落下的棋子与其他相同颜色的棋子在行、列或对角线完全包围(中间不存在空白位置)另一种颜色的棋子,则可以翻转这些棋子的颜色。 力扣挑战赛」黑白翻转棋项目

    2024年02月09日
    浏览(34)
  • 2023-07-26力扣每日一题-区间翻转线段树

    链接: 2569. 更新数组后处理求和查询 题意: 给两个等长数组nums1和nums2,三个操作: 操作1:将nums1的 [l,r] 翻转(0变1,1变0) 操作2:将 nums2[any] 变成 nums2[any]+nums1[any]*p ,p由操作给出,any表示数组里的每一位 操作3:查询nums2的和 解: 由于每次更新nums2的时候,不需要考虑

    2024年02月15日
    浏览(43)
  • 【每日一题Day244】LCP 41. 黑白翻转棋 bfs dfs

    LCP 41. 黑白翻转棋 在 n*m 大小的棋盘中,有黑白两种棋子,黑棋记作字母 \\\"X\\\" , 白棋记作字母 \\\"O\\\" ,空余位置记作 \\\".\\\" 。当落下的棋子与其他相同颜色的棋子在行、列或对角线完全包围(中间不存在空白位置)另一种颜色的棋子,则可以翻转这些棋子的颜色。 思路 枚举棋盘中每

    2024年02月09日
    浏览(53)
  • 【leetcode 力扣刷题】字符串翻转合集(全部反转///部分反转)

    题目链接:344. 反转字符串 题目内容: 题目中重点强调了必须 原地修改 输入数组,即不能新建一个数组来完成字符串的反转。我们注意到: 原来下标为0的,反转后是size - 1【原来下标是size - 1的,反转后是0】; 原来下标是1的,反转后是size - 2【原来下标是size -2的,反转后

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包