- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 leet 代码中的一个问题,问题是:
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad. Suppose you have n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad. You are given an API
bool isBadVersion(version)
which will return whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.
我对上述问题的解决方案是:
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution
{
public:
int firstBadVersion(int n)
{
bool x = isBadVersion(n);
if (x == true)
{
return n;
}
else
{
return firstBadVersion(n + 1);
}
}
};
但是在 leet 代码上它说我有错误的解决方案。有人可以指出我正确的方向吗...
我从 leet 代码中得到的解释是:
Input: 2 versions
1 is the first bad version.
Output: 2
Expected: 1
最佳答案
您的代码实际上会找到第一个错误版本,在传入的版本 (n
) 上或之后。换句话说,这取决于您传入的内容。
我怀疑实际传入的是最高版本(尽管规范对此不明确,但这是有道理的),这意味着您将始终提供最高版本而不是最低版本一。你最好使用类似(伪代码)的东西:
def findfirstbad(n):
for i = 1 to n:
if isbadversion(i):
return i
return sentinel # 0 or -1 or some other NA response.
在任何情况下,最小化 API 调用都需要使用二进制搜索算法,您应该对此进行研究。您目前拥有的是递归线性搜索,它不会最小化调用次数。
虽然线性搜索在每次迭代(或递归)中删除一个可能的项目,但二分搜索每次都会删除一半的剩余空间。伪代码是这样的:
def findfirstbad(n):
# No bad version possible if no versions.
if n < 1:
return sentinel
# Start pincer at ends.
lastgood = 0
firstbad = n
# Continue until lastgood and firstbad are together.
while lastgood + 1 < firstbad:
# Find midpoint, adjust correct pincer.
mid = (lastgood + firstbad) / 2
if isbadversion(mid):
firstbad = mid
else:
lastgood = mid
# Ensure one last check in case there were no bad versions.
if isbadversion(firstbad):
return firstbad
return sentinel
如果您借助笔和纸在脑海中运行该代码,您会发现它逐渐引入 lastgood/firstbad
索引,直到它找到第一个坏的(或发现没有坏的)。
然后一个简单的检查将决定你是否找到它,如果你找到它则返回版本。
关于c++ - 有人可以帮我弄清楚我在这里做错了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32855514/
我一直在试图理解人们一直在使用的这个网格系统。有时让我觉得自己很蠢。 我了解如果您使用无边距的 12 网格系统。第 12 列将是 100%,而第 1 列将约为 8.33333%。 我一直在看一些网格系
我们被分配了一个用于系统编程的 ASCII 压缩项目,但我在代码中的某一特定行上遇到了困难。 我问了question关于压缩,在处理完纸上示例文件的前十几个字母后,我将数组代码调整到了我的程序中。在
我正在使用 Appcelerator 框架编写应用程序,但偶尔会发生崩溃。我正在尝试找出导致崩溃的原因,因此我决定查看 iOS 模拟器崩溃报告。当然,这对我来说都是希腊语,但我希望得到一些指导,了解其
有人可以给我一些指导或指导我阅读有关 C++ set 对象的优秀教程吗? 我有一段这样的简单代码: #include using namespace std; int main() { ch
老实说,我不知道我的问题是否有解决方案,但我想在 Swift 中捕捉上下文切换发生的时间。 我正在想象一个需要很长时间才能完成的功能,例如远程服务器上的写操作,我在想是否有办法了解何时(至少在哪一行)
我正在使用 Yii2 并且一直在阅读 theming和 theme inheritance ;但是有一些问题: 考虑以下示例: 'view' => [ 'theme' => [
我尝试使用 AJAX 发布,因为我不想使用提交按钮并在每次单击它时重新加载页面。我正在使用此代码进行 ajax: Ajax loading error, please try again.").sho
我正在尝试找出将在 NodeJS 应用程序中使用的 MongoDB 模型的理想设计。该应用程序的设置类似于调查,某些步骤会根据之前的选择提供选项。这是选择和可能性的示例。 第 1 级:图案类型:纯色、
我有一个 API/Express 路由器: router.post("/signup", async function (req, res) { try { var user
我注意到 JFileChooser 隐藏了 Windows 系统文件。 hiberfil.sys、pagefile.sys、$Recycle.Bin 等文件、一些无法打开的快捷方式文件夹等... 我可
这是我第一次使用 Django,到目前为止,我对这个框架的工作方式印象深刻。我目前正在开发我的第一个应用程序,并正在处理数据库内容,但是,我在弄清楚如何在不运行原始查询的情况下进行内部联接时遇到问题。
我在自动调整蒙版大小方面遇到了一些问题。这是交易:我正在使用最近发布的 TwUI ,它从 UIKit 中获取了很多,但它在 Mac 上。这就是我为 iOS 和 Mac 标记的原因。因此,我创建了一个底
好吧,这是一个很长的,打起精神来! :) 最近我尝试在启动期间启动一个用 bash 编写的看门狗脚本。所以我在 rc.local 中添加了一行,其中包含以下内容: su someuser -c "/h
我在我的机器上安装了多个版本的 Windows 软件开发工具包,有趣的是,我的机器上已经安装了一个 Visual studio Installer工具的版本低于近一年前安装的版本: Windows S
widget('zii.widgets.CMenu', array( 'items'=>array( array('label'=>'Home', '
我是一名优秀的程序员,十分优秀!