Skip to content

Commit 10fa6c1

Browse files
committed
feat: add solutions to lc problem: No.0458.Poor Pigs
1 parent 896e06d commit 10fa6c1

File tree

6 files changed

+119
-8
lines changed

6 files changed

+119
-8
lines changed

solution/0400-0499/0458.Poor Pigs/README.md

+48-2
Original file line numberDiff line numberDiff line change
@@ -52,27 +52,73 @@
5252
<li><code>1 <= minutesToDie <= minutesToTest <= 100</code></li>
5353
</ul>
5454

55-
5655
## 解法
5756

5857
<!-- 这里可写通用的实现逻辑 -->
5958

59+
每只 🐖 可以喝液体的次数是 `minutesToTest / minutesToDie`,那么 🐖 会有 `(minutesToTest / minutesToDie) + 1` 种状态,即喝完第 1 次死亡,喝完第 2 次死亡,...,喝完第 `minutesToTest / minutesToDie` 死亡,喝完第 `minutesToTest / minutesToDie` 次依然存活。
60+
61+
我们设定 `base = (minutesToTest / minutesToDie) + 1`,n 只 🐖 能验证的范围是 `pow(base, n)`,因此求 `pow(base, n) >= buckets` 的最小 n 即可。
62+
6063
<!-- tabs:start -->
6164

6265
### **Python3**
6366

6467
<!-- 这里可写当前语言的特殊实现逻辑 -->
6568

6669
```python
67-
70+
class Solution:
71+
def poorPigs(self, buckets: int, minutesToDie: int, minutesToTest: int) -> int:
72+
base = minutesToTest // minutesToDie + 1
73+
res, p = 0, 1
74+
while p < buckets:
75+
p *= base
76+
res += 1
77+
return res
6878
```
6979

7080
### **Java**
7181

7282
<!-- 这里可写当前语言的特殊实现逻辑 -->
7383

7484
```java
85+
class Solution {
86+
public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
87+
int base = minutesToTest / minutesToDie + 1;
88+
int res = 0;
89+
for (int p = 1; p < buckets; p *= base) {
90+
++res;
91+
}
92+
return res;
93+
}
94+
}
95+
```
96+
97+
### **C++**
98+
99+
```cpp
100+
class Solution {
101+
public:
102+
int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
103+
int base = minutesToTest / minutesToDie + 1;
104+
int res = 0;
105+
for (int p = 1; p < buckets; p *= base) ++res;
106+
return res;
107+
}
108+
};
109+
```
75110
111+
### **Go**
112+
113+
```go
114+
func poorPigs(buckets int, minutesToDie int, minutesToTest int) int {
115+
base := minutesToTest/minutesToDie + 1
116+
res := 0
117+
for p := 1; p < buckets; p *= base {
118+
res++
119+
}
120+
return res
121+
}
76122
```
77123

78124
### **...**

solution/0400-0499/0458.Poor Pigs/README_EN.md

+44-2
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,63 @@
3737
<li><code>1 &lt;=&nbsp;minutesToDie &lt;=&nbsp;minutesToTest &lt;= 100</code></li>
3838
</ul>
3939

40-
4140
## Solutions
4241

4342
<!-- tabs:start -->
4443

4544
### **Python3**
4645

4746
```python
48-
47+
class Solution:
48+
def poorPigs(self, buckets: int, minutesToDie: int, minutesToTest: int) -> int:
49+
base = minutesToTest // minutesToDie + 1
50+
res, p = 0, 1
51+
while p < buckets:
52+
p *= base
53+
res += 1
54+
return res
4955
```
5056

5157
### **Java**
5258

5359
```java
60+
class Solution {
61+
public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
62+
int base = minutesToTest / minutesToDie + 1;
63+
int res = 0;
64+
for (int p = 1; p < buckets; p *= base) {
65+
++res;
66+
}
67+
return res;
68+
}
69+
}
70+
```
71+
72+
### **C++**
73+
74+
```cpp
75+
class Solution {
76+
public:
77+
int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
78+
int base = minutesToTest / minutesToDie + 1;
79+
int res = 0;
80+
for (int p = 1; p < buckets; p *= base) ++res;
81+
return res;
82+
}
83+
};
84+
```
5485
86+
### **Go**
87+
88+
```go
89+
func poorPigs(buckets int, minutesToDie int, minutesToTest int) int {
90+
base := minutesToTest/minutesToDie + 1
91+
res := 0
92+
for p := 1; p < buckets; p *= base {
93+
res++
94+
}
95+
return res
96+
}
5597
```
5698

5799
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution {
2+
public:
3+
int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
4+
int base = minutesToTest / minutesToDie + 1;
5+
int res = 0;
6+
for (int p = 1; p < buckets; p *= base) ++res;
7+
return res;
8+
}
9+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
func poorPigs(buckets int, minutesToDie int, minutesToTest int) int {
2+
base := minutesToTest/minutesToDie + 1
3+
res := 0
4+
for p := 1; p < buckets; p *= base {
5+
res++
6+
}
7+
return res
8+
}

solution/0400-0499/0458.Poor Pigs/Solution.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@ class Solution {
22
public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
33
int base = minutesToTest / minutesToDie + 1;
44
int res = 0;
5-
int p = 1;
6-
while (p < buckets) {
7-
p *= base;
5+
for (int p = 1; p < buckets; p *= base) {
86
++res;
97
}
108
return res;
119
}
12-
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def poorPigs(self, buckets: int, minutesToDie: int, minutesToTest: int) -> int:
3+
base = minutesToTest // minutesToDie + 1
4+
res, p = 0, 1
5+
while p < buckets:
6+
p *= base
7+
res += 1
8+
return res

0 commit comments

Comments
 (0)