LeetCode 299 Bulls and Cows

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

内容简介:你正和你的朋友一起玩下面的公牛和母牛游戏:你写下一个数字然后让你的朋友猜猜这个数字是多少. 每当你的朋友猜测时, 你提供一个提示, 表明所述猜测中有多少位数与你的密码完全匹配,包括数字和位置(称为”公牛”)以及有多少位数与密码匹配但位于错误的位置(称为”奶牛”)。编写一个函数, 根据秘密数字和朋友的猜测返回提示, 用于 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.

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

查看所有标签

猜你喜欢:

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

perl进阶

perl进阶

Randal L.Schwartz、brian d.foy、Tom Phoenix / 韩雷 / 人民邮电出版社 / 2015-10-1 / 69

本书是Learning Perl一书的进阶。学完本书之后,您可以使用Perl语言的特性编写从简单脚本到大型程序在内的所有程序,正是Perl语言的这些特性使其成为通用的编程语言。本书为读者深入介绍了模块、复杂的数据结构以及面向对象编程等知识。 本书每章的篇幅都短小精悍,读者可以在一到两个小时内读完,每章末尾的练习有助于您巩固在本章所学的知识。如果您已掌握了Learning Perl中的内容并渴......一起来看看 《perl进阶》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具