LeetCode 299 Bulls and Cows

栏目: 编程工具 · 发布时间: 7年前

内容简介:你正和你的朋友一起玩下面的公牛和母牛游戏:你写下一个数字然后让你的朋友猜猜这个数字是多少. 每当你的朋友猜测时, 你提供一个提示, 表明所述猜测中有多少位数与你的密码完全匹配,包括数字和位置(称为”公牛”)以及有多少位数与密码匹配但位于错误的位置(称为”奶牛”)。编写一个函数, 根据秘密数字和朋友的猜测返回提示, 用于 A 表示公牛, B 表示奶牛.刚开始我的想法是依次获取公牛和奶牛的数量, 但奶牛的判断需要 O(n^2) 的时间复杂度, 后面想到, 用所有匹配的数量 - 公牛的数量就是奶牛的数量, 只需

你正和你的朋友一起玩下面的公牛和母牛游戏:你写下一个数字然后让你的朋友猜猜这个数字是多少. 每当你的朋友猜测时, 你提供一个提示, 表明所述猜测中有多少位数与你的密码完全匹配,包括数字和位置(称为”公牛”)以及有多少位数与密码匹配但位于错误的位置(称为”奶牛”)。

编写一个函数, 根据秘密数字和朋友的猜测返回提示, 用于 A 表示公牛, B 表示奶牛.

解法

刚开始我的想法是依次获取公牛和奶牛的数量, 但奶牛的判断需要 O(n^2) 的时间复杂度, 后面想到, 用所有匹配的数量 - 公牛的数量就是奶牛的数量, 只需要 O(n) 的时间复杂度和 O(1) 的空间复杂度.

public String getHint(String secret, String guess) {
    int[] table = new int[10];
    
    int total = 0;
    int bulls = 0;
    for (char c :secret.toCharArray()) {
        table[c - '0']++;
    }

    for (int i = 0; i < guess.length(); i++) {
        if (secret.charAt(i) == guess.charAt(i)) {
            bulls++;
        }
        if (table[guess.charAt(i) - '0']-- > 0) {
            total++;
        }
    }
    
    return bulls + "A" + (total - bulls)  + "B";
}
Runtime: 1 ms, faster than 100.00% of Java online submissions for Bulls and Cows.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

TCP/IP网络管理

TCP/IP网络管理

亨特 / 电子工业 / 2006年3月1日 / 79.00元

本书是一本架设与维护TCP/IP网络的完整指南,无论你是在职的系统管理员,还是需要访问Internet的家用系统用户,都可从本书获得帮助。本书还讨论了高级路由协议(RIPv2、OSPF、BGP),以及实现这些协议的gated软件。对于各种重要的网络服务,如DNS,Apache,sendmail,Samba,PPP和DHCP,本书都提供了配置范例,以及相关的软件包与工具的语法参考。一起来看看 《TCP/IP网络管理》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具