栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

力扣刷题学习299. 猜数字游戏(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣刷题学习299. 猜数字游戏(C++)

题目描述

题目描述较绕,直接看原文。

解答

首先公牛数量好算,只要看对应位置的值是否相同。
而对于奶牛数量,是指可以通过改变位置后变成公牛的值,那么就是指两个数组中相同值的数量的最小值,也就是说当有多个相同值时,只有对应最少量的可以变成公牛。
这里可以用计数数组来分别统计对应值的数量,然后取两个数组对应位置最小的值。

class Solution {
public:
    string getHint(string secret, string guess) {
        int bulls = 0;
        vector cntS(10), cntG(10);
        for (int i = 0; i < secret.length(); ++i) {
            if (secret[i] == guess[i]) {
                ++bulls;
            } else {
                ++cntS[secret[i] - '0'];
                ++cntG[guess[i] - '0'];
            }
        }
        int cows = 0;
        for (int i = 0; i < 10; ++i) {
            cows += min(cntS[i], cntG[i]);
        }
        return to_string(bulls) + "A" + to_string(cows) + "B";
    }
};
复杂度分析
  • 时间复杂度:O(N)O(N),其中 NN 是字符串 textit{secret}secret 的长度。
  • 空间复杂度:O©O©。需要常数个空间统计字符出现次数,由于我们统计的是数字字符,因此 C=10C=10。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号