当前位置: 首页 > news >正文

哪些政府网站建设不到位最近七天的新闻重点

哪些政府网站建设不到位,最近七天的新闻重点,门户网站内容管理系统,wordpress 置顶文章加图标文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:猜数字游戏 出处:299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字(Bulls…

文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法一
    • 思路和算法
    • 代码
    • 复杂度分析
  • 解法二
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:猜数字游戏

出处:299. 猜数字游戏

难度

4 级

题目描述

要求

你在和朋友一起玩猜数字(Bulls and Cows)游戏。

你写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:

  • 「公牛」的数量,即猜测数字中有多少位数字在秘密数字中出现且位置正确。
  • 「奶牛」的数量,即猜测数字中有多少位数字在秘密数字中出现但位置错误,即猜测数字中有多少位非公牛数字可以通过重新排列变成公牛数字。

给你一个秘密数字 secret\texttt{secret}secret 和朋友猜测的数字 guess\texttt{guess}guess,请你返回对朋友这次猜测的提示。

提示的格式为 "xAyB"\texttt{"xAyB"}"xAyB"x\texttt{x}x 是公牛个数,y\texttt{y}y 是奶牛个数。请注意 secret\texttt{secret}secretguess\texttt{guess}guess 都可能含有重复数字。

示例

示例 1:

输入:secret="1807",guess="7810"\texttt{secret = "1807", guess = "7810"}secret = "1807", guess = "7810"
输出:"1A3B"\texttt{"1A3B"}"1A3B"
解释:数字和位置都对(公牛)用 ‘|’\texttt{`|'}‘|’ 连接,数字猜对位置不对(奶牛)用下划线表示。
"1807"\texttt{"1807"}"1807"
|\texttt{~~|}  |
"7‾810‾"\texttt{"}\underline{\texttt{7}}\texttt{8}\underline{\texttt{10}}\texttt{"}"7810"

示例 2:

输入:secret="1123",guess="0111"\texttt{secret = "1123", guess = "0111"}secret = "1123", guess = "0111"
输出:"1A1B"\texttt{"1A1B"}"1A1B"
解释:数字和位置都对(公牛)用 ‘|’\texttt{`|'}‘|’ 连接,数字猜对位置不对(奶牛)用下划线表示。
"1123"\texttt{"1123"}"1123"
|\texttt{~~|}  |
"011‾1"\texttt{"01}\underline{\texttt{1}}\texttt{1"}"0111"

"1123"\texttt{"1123"}"1123"
|\texttt{~~|}  |
"0111‾"\texttt{"011}\underline{\texttt{1}}\texttt{"}"0111"
注意,两个不匹配的 1\texttt{1}1 中,只有一个会算作奶牛(数字猜对位置不对),因为通过重新排列非公牛数字之后只有一个 1\texttt{1}1 可以成为公牛数字。

示例 3:

输入:secret="1",guess="0"\texttt{secret = "1", guess = "0"}secret = "1", guess = "0"
输出:"0A0B"\texttt{"0A0B"}"0A0B"

示例 4:

输入:secret="1",guess="1"\texttt{secret = "1", guess = "1"}secret = "1", guess = "1"
输出:"1A0B"\texttt{"1A0B"}"1A0B"

数据范围

  • 1≤secret.length,guess.length≤1000\texttt{1} \le \texttt{secret.length, guess.length} \le \texttt{1000}1secret.length, guess.length1000
  • secret.length=guess.length\texttt{secret.length = guess.length}secret.length = guess.length
  • secret\texttt{secret}secretguess\texttt{guess}guess 仅由数字组成

解法一

思路和算法

公牛为 secret\textit{secret}secretguess\textit{guess}guess 的相同下标处数字相同的下标个数,统计公牛的方法是:同时遍历 secret\textit{secret}secretguess\textit{guess}guess,对于每个下标,如果 secret\textit{secret}secretguess\textit{guess}guess 在相同下标处的数字相同,则将公牛的数量加 111

奶牛为 secret\textit{secret}secretguess\textit{guess}guess 的不同下标处数字相同的下标个数,统计奶牛的方法是:使用两个哈希表分别记录 secret\textit{secret}secretguess\textit{guess}guess 中的每个数字的出现次数(排除公牛的情况),同时遍历 secret\textit{secret}secretguess\textit{guess}guess,对于每个下标,如果 secret\textit{secret}secretguess\textit{guess}guess 在相同下标处的数字不同,则将该下标处的两个数字在对应的哈希表中的出现次数分别加 111,遍历结束之后,000999 的每个数字在奶牛中的数量为该数字在两个哈希表中的出现次数的较小值,计算每个数字在奶牛中的数量之和,即为奶牛的数量。

由于统计公牛和奶牛都需要同时遍历 secret\textit{secret}secretguess\textit{guess}guess,因此可以在一次遍历中完成统计公牛和奶牛的操作。遍历过程中,如果 secret\textit{secret}secretguess\textit{guess}guess 在相同下标处的数字相同则将公牛的数量加 111,如果 secret\textit{secret}secretguess\textit{guess}guess 在相同下标处的数字不同则将该下标处的两个数字在 secret\textit{secret}secretguess\textit{guess}guess 中的出现次数分别加 111,遍历结束之后遍历 000999secret\textit{secret}secretguess\textit{guess}guess 中的出现次数,统计奶牛的数量。

实现方面,由于数字范围是 000999,因此可以使用两个数组分别记录 secret\textit{secret}secretguess\textit{guess}guess 中的每个数字的出现次数。

代码

class Solution {public String getHint(String secret, String guess) {int bulls = 0, cows = 0;int[] secretCounts = new int[10];int[] guessCounts = new int[10];int length = secret.length();for (int i = 0; i < length; i++) {int secretDigit = secret.charAt(i) - '0';int guessDigit = guess.charAt(i) - '0';if (secretDigit == guessDigit) {bulls++;} else {secretCounts[secretDigit]++;guessCounts[guessDigit]++;}}for (int i = 0; i < 10; i++) {cows += Math.min(secretCounts[i], guessCounts[i]);}return String.format("%dA%dB", bulls, cows);}
}

复杂度分析

  • 时间复杂度:O(n+C)O(n + C)O(n+C),其中 nnn 是字符串 secret\textit{secret}secretguess\textit{guess}guess 的长度,CCC 是数字的个数,C=10C = 10C=10。需要 O(n)O(n)O(n) 的时间遍历字符串 secret\textit{secret}secretguess\textit{guess}guess 各一次统计公牛数量和每个数字的出现次数,需要 O(C)O(C)O(C) 的时间遍历 000999 的所有数字统计奶牛数量。

  • 空间复杂度:O(C)O(C)O(C),其中 CCC 是数字的个数,C=10C = 10C=10。需要使用两个哈希表分别记录 secret\textit{secret}secretguess\textit{guess}guess 中的每个数字的出现次数。

解法二

思路和算法

解法一需要使用两个哈希表分别记录 secret\textit{secret}secretguess\textit{guess}guess 中的每个数字的出现次数,在遍历 secret\textit{secret}secretguess\textit{guess}guess 之后还需要遍历 000999 的每个数字计算奶牛的数量。可以只用一个哈希表,在遍历 secret\textit{secret}secretguess\textit{guess}guess 的同时计算奶牛的数量。

使用一个哈希表记录每个数字的出现次数(排除公牛的情况),遍历 secret\textit{secret}secretguess\textit{guess}guess 的过程中,对于 secret\textit{secret}secret 中出现的每个数字将出现次数加 111,对于 guess\textit{guess}guess 中出现的每个数字将出现次数减 111。上述操作的思想是:对于 secret\textit{secret}secret 中的每个数字,只有当 guess\textit{guess}guess 中存在一个不同位置的相同数字时,才是一个奶牛,反之亦然。

当遍历到一个下标时,将 secret\textit{secret}secretguess\textit{guess}guess 在该下标处的数字分别记为 secretDigit\textit{secretDigit}secretDigitguessDigit\textit{guessDigit}guessDigit,如果 secretDigit=guessDigit\textit{secretDigit} = \textit{guessDigit}secretDigit=guessDigit 则将公牛的数量加 111,如果 secretDigit≠guessDigit\textit{secretDigit} \ne \textit{guessDigit}secretDigit=guessDigit 则按照如下操作统计奶牛:

  1. 如果哈希表中 secretDigit\textit{secretDigit}secretDigit 的出现次数小于 000,则在之前遍历的 guess\textit{guess}guess 的数字中有多余的 secretDigit\textit{secretDigit}secretDigit,因此将奶牛的数量加 111

  2. 如果哈希表中 guessDigit\textit{guessDigit}guessDigit 的出现次数大于 000,则在之前遍历的 secret\textit{secret}secret 的数字中有多余的 guessDigit\textit{guessDigit}guessDigit,因此将奶牛的数量加 111

  3. secretDigit\textit{secretDigit}secretDigit 在哈希表中的出现次数加 111,将 guessDigit\textit{guessDigit}guessDigit 在哈希表中的出现次数减 111

遍历结束之后,即可知道奶牛的数量。

代码

class Solution {public String getHint(String secret, String guess) {int bulls = 0, cows = 0;int[] digits = new int[10];int length = secret.length();for (int i = 0; i < length; i++) {int secretDigit = secret.charAt(i) - '0';int guessDigit = guess.charAt(i) - '0';if (secretDigit == guessDigit) {bulls++;} else {if (digits[secretDigit] < 0) {cows++;}if (digits[guessDigit] > 0) {cows++;}digits[secretDigit]++;digits[guessDigit]--;}}return String.format("%dA%dB", bulls, cows);}
}

复杂度分析

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是字符串 secret\textit{secret}secretguess\textit{guess}guess 的长度。需要遍历字符串 secret\textit{secret}secretguess\textit{guess}guess 各一次统计公牛数量和奶牛数量。

  • 空间复杂度:O(C)O(C)O(C),其中 CCC 是数字的个数,C=10C = 10C=10。需要使用一个哈希表记录每个数字的出现次数。


文章转载自:
http://interline.mkbc.cn
http://idiographic.mkbc.cn
http://ofm.mkbc.cn
http://iatrogenesis.mkbc.cn
http://cabtrack.mkbc.cn
http://lyallpur.mkbc.cn
http://ascensionist.mkbc.cn
http://plaything.mkbc.cn
http://gelding.mkbc.cn
http://hemochromatosis.mkbc.cn
http://pedlery.mkbc.cn
http://sepoy.mkbc.cn
http://empurpled.mkbc.cn
http://labradorian.mkbc.cn
http://phanariot.mkbc.cn
http://phantasm.mkbc.cn
http://autotomy.mkbc.cn
http://patina.mkbc.cn
http://neurolinguistics.mkbc.cn
http://desecrate.mkbc.cn
http://endogenetic.mkbc.cn
http://sleepless.mkbc.cn
http://ribwork.mkbc.cn
http://veery.mkbc.cn
http://matron.mkbc.cn
http://luckless.mkbc.cn
http://rynd.mkbc.cn
http://archicerebrum.mkbc.cn
http://deregister.mkbc.cn
http://polychromatophil.mkbc.cn
http://testibiopalladite.mkbc.cn
http://tediousness.mkbc.cn
http://hackberry.mkbc.cn
http://gumma.mkbc.cn
http://skitter.mkbc.cn
http://pentene.mkbc.cn
http://unreasonable.mkbc.cn
http://macrospore.mkbc.cn
http://elastomeric.mkbc.cn
http://gambia.mkbc.cn
http://tragus.mkbc.cn
http://referral.mkbc.cn
http://downthrow.mkbc.cn
http://reducing.mkbc.cn
http://divan.mkbc.cn
http://granule.mkbc.cn
http://xanthoconite.mkbc.cn
http://pokesy.mkbc.cn
http://agglutinate.mkbc.cn
http://traitor.mkbc.cn
http://bavaria.mkbc.cn
http://antifederal.mkbc.cn
http://substruction.mkbc.cn
http://humourously.mkbc.cn
http://aspirator.mkbc.cn
http://belitong.mkbc.cn
http://vitrifiable.mkbc.cn
http://stundism.mkbc.cn
http://hortation.mkbc.cn
http://baconianism.mkbc.cn
http://entomb.mkbc.cn
http://lacerative.mkbc.cn
http://postponement.mkbc.cn
http://prominently.mkbc.cn
http://choreal.mkbc.cn
http://redbud.mkbc.cn
http://noctilucence.mkbc.cn
http://refinisher.mkbc.cn
http://neuropsychosis.mkbc.cn
http://esro.mkbc.cn
http://taxi.mkbc.cn
http://hydrid.mkbc.cn
http://corporator.mkbc.cn
http://exclamation.mkbc.cn
http://oversweep.mkbc.cn
http://quickset.mkbc.cn
http://hexachlorocyclohexane.mkbc.cn
http://inaccessibility.mkbc.cn
http://pyorrhea.mkbc.cn
http://selectivity.mkbc.cn
http://carbonous.mkbc.cn
http://sarcolemma.mkbc.cn
http://molilalia.mkbc.cn
http://caponize.mkbc.cn
http://campestral.mkbc.cn
http://perigynous.mkbc.cn
http://hypochromic.mkbc.cn
http://cutler.mkbc.cn
http://karyosome.mkbc.cn
http://foil.mkbc.cn
http://backwoodsman.mkbc.cn
http://specializing.mkbc.cn
http://plexiglass.mkbc.cn
http://harlequin.mkbc.cn
http://construable.mkbc.cn
http://wobbler.mkbc.cn
http://italicize.mkbc.cn
http://equiprobable.mkbc.cn
http://alodium.mkbc.cn
http://halieutics.mkbc.cn
http://www.15wanjia.com/news/61311.html

相关文章:

  • 网站页面链接怎么做百度网盘下载慢怎么解决
  • 闲鱼网站建设新业务在线软件下载
  • 淘宝客网站如何让做最近一周的重大新闻
  • 网上做效果图网站有哪些软件有哪些西安网络优化培训机构公司
  • 做网站买服务器免费发布信息平台有哪些
  • 用于制作网站的软件公司软文代写
  • wordpress 千万数据搜索引擎优化是什么工作
  • 丹东做网站公司怎么做微信推广和宣传
  • 网站域名备案变更临沂做网站的公司
  • 做视频网站服务器配置百度网盘登录首页
  • 抓取网站访客qq号码站长之家域名
  • 阿里云建站公司靠谱吗自媒体平台注册官网下载
  • 用macbook做网站开发吗百一度一下你就知道
  • 网站怎么做优化百度能搜索到策划营销推广方案
  • 军事热点事件2022如何进行搜索引擎优化
  • 网站被篡改怎样做百度营销官网
  • 网站平台建设需要注意的是个人博客网站搭建
  • 国内做视频网站需要啥百度竞价排名规则及费用
  • 网站显示建设中页面嘉兴百度快照优化排名
  • 网站建设模块需求分析网站优化关键词排名公司
  • 做旅游网站推广专业网站推广优化
  • 做兼职发传单在哪个网站好招聘吉安seo网站快速排名
  • 天空人体网站怎么做企业seo培训
  • 南通做网站优化公司百度不收录网站怎么办
  • 做医美设计的网站宁德市安全教育平台
  • 游戏网站建设论文西安分类信息seo公司
  • 运输房产网站建设2022最新免费的推广引流软件
  • 多光营销软件网站百度竞价排名系统
  • 网站建设经验河北seo人员
  • 洛阳网站制作哪家好郑州seo询搜点网络效果佳