Skip to content

Commit 6fac7d3

Browse files
halfrostdezhiy
authored andcommitted
Add solution 0299
1 parent a47ce19 commit 6fac7d3

24 files changed

+1538
-1398
lines changed

README.md

Lines changed: 822 additions & 807 deletions
Large diffs are not rendered by default.

leetcode/0299.Bulls-and-Cows/README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# [299. Bulls and Cows](https://leetcode-cn.com/problems/bulls-and-cows/)
1+
# [299. Bulls and Cows](https://leetcode.com/problems/bulls-and-cows/)
22

33

44
## 题目
@@ -72,12 +72,14 @@ Output: "1A0B"
7272

7373
## 解题思路
7474

75-
- 计算下标一致并且对应下标的元素一致的个数,即x
76-
- secret和guess分别去除x个公牛的元素,剩下secret和guess求共同的元素个数就是y
77-
- 把x, y转换成字符串,分别与"A""B"进行拼接返回结果
75+
- 计算下标一致并且对应下标的元素一致的个数,即 x
76+
- secret 和 guess 分别去除 x 个公牛的元素,剩下 secret 和 guess 求共同的元素个数就是 y
77+
- 把 x, y 转换成字符串,分别与 "A""B" 进行拼接返回结果
7878

7979
## 代码
80+
8081
```go
82+
8183
package leetcode
8284

8385
import "strconv"

website/content/ChapterFour/0200~0299/0297.Serialize-and-Deserialize-Binary-Tree.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,5 @@ func (this *Codec) deserializeHelper() *TreeNode {
116116
----------------------------------------------
117117
<div style="display: flex;justify-content: space-between;align-items: center;">
118118
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0290.Word-Pattern/">⬅️上一页</a></p>
119-
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0300~0399/0300.Longest-Increasing-Subsequence/">下一页➡️</a></p>
119+
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0299.Bulls-and-Cows/">下一页➡️</a></p>
120120
</div>
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# [299. Bulls and Cows](https://leetcode.com/problems/bulls-and-cows/)
2+
3+
4+
## 题目
5+
6+
You are playing the Bulls and Cows game with your friend.
7+
8+
You write down a secret number and ask your friend to guess what the number is. When your friend makes a guess, you provide a hint with the following info:
9+
10+
The number of "bulls", which are digits in the guess that are in the correct position.
11+
The number of "cows", which are digits in the guess that are in your secret number but are located in the wrong position. Specifically, the non-bull digits in the guess that could be rearranged such that they become bulls.
12+
Given the secret number secret and your friend's guess guess, return the hint for your friend's guess.
13+
14+
The hint should be formatted as "xAyB", where x is the number of bulls and y is the number of cows. Note that both secret and guess may contain duplicate digits.
15+
16+
**Example 1:**
17+
18+
```
19+
Input: secret = "1807", guess = "7810"
20+
Output: "1A3B"
21+
Explanation: Bulls are connected with a '|' and cows are underlined:
22+
"1807"
23+
|
24+
"7810"
25+
```
26+
27+
**Example 2:**
28+
29+
```
30+
Input: secret = "1123", guess = "0111"
31+
Output: "1A1B"
32+
Explanation: Bulls are connected with a '|' and cows are underlined:
33+
"1123" "1123"
34+
| or |
35+
"0111" "0111"
36+
Note that only one of the two unmatched 1s is counted as a cow since the non-bull digits can only be rearranged to allow one 1 to be a bull.
37+
```
38+
39+
**Example 3:**
40+
41+
```
42+
Input: secret = "1", guess = "0"
43+
Output: "0A0B"
44+
```
45+
46+
**Example 4:**
47+
48+
```
49+
Input: secret = "1", guess = "1"
50+
Output: "1A0B"
51+
```
52+
53+
**Constraints:**
54+
55+
- 1 <= secret.length, guess.length <= 1000
56+
- secret.length == guess.length
57+
- secret and guess consist of digits only.
58+
59+
## 题目大意
60+
61+
你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:
62+
63+
写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:
64+
65+
猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls", 公牛),
66+
有多少位属于数字猜对了但是位置不对(称为 "Cows", 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。
67+
给你一个秘密数字secret 和朋友猜测的数字guess ,请你返回对朋友这次猜测的提示。
68+
69+
提示的格式为 "xAyB" ,x 是公牛个数, y 是奶牛个数,A 表示公牛,B表示奶牛。
70+
71+
请注意秘密数字和朋友猜测的数字都可能含有重复数字。
72+
73+
## 解题思路
74+
75+
- 计算下标一致并且对应下标的元素一致的个数,即 x
76+
- secret 和 guess 分别去除 x 个公牛的元素,剩下 secret 和 guess 求共同的元素个数就是 y
77+
- 把 x, y 转换成字符串,分别与 "A" 和 "B" 进行拼接返回结果
78+
79+
## 代码
80+
81+
```go
82+
83+
package leetcode
84+
85+
import "strconv"
86+
87+
func getHint(secret string, guess string) string {
88+
cntA, cntB := 0, 0
89+
mpS := make(map[byte]int)
90+
var strG []byte
91+
n := len(secret)
92+
var ans string
93+
for i := 0; i < n; i++ {
94+
if secret[i] == guess[i] {
95+
cntA++
96+
} else {
97+
mpS[secret[i]] += 1
98+
strG = append(strG, guess[i])
99+
}
100+
}
101+
for _, v := range strG {
102+
if _, ok := mpS[v]; ok {
103+
if mpS[v] > 1 {
104+
mpS[v] -= 1
105+
} else {
106+
delete(mpS, v)
107+
}
108+
cntB++
109+
}
110+
}
111+
ans += strconv.Itoa(cntA) + "A" + strconv.Itoa(cntB) + "B"
112+
return ans
113+
}
114+
```
115+
116+
117+
----------------------------------------------
118+
<div style="display: flex;justify-content: space-between;align-items: center;">
119+
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0297.Serialize-and-Deserialize-Binary-Tree/">⬅️上一页</a></p>
120+
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0300~0399/0300.Longest-Increasing-Subsequence/">下一页➡️</a></p>
121+
</div>

website/content/ChapterFour/0300~0399/0300.Longest-Increasing-Subsequence.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,6 @@ func lengthOfLIS1(nums []int) int {
8282

8383
----------------------------------------------
8484
<div style="display: flex;justify-content: space-between;align-items: center;">
85-
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0297.Serialize-and-Deserialize-Binary-Tree/">⬅️上一页</a></p>
85+
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0299.Bulls-and-Cows/">⬅️上一页</a></p>
8686
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0300~0399/0301.Remove-Invalid-Parentheses/">下一页➡️</a></p>
8787
</div>

0 commit comments

Comments
 (0)