- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
任务 -- 此代码问题的目标是实现二分查找算法。
输入格式 -- 输入的第一行包含一个整数 n 和一个序列 a0 < a1 < ... < an−1,其中 n 个成对不同的正整数按升序排列。下一行包含一个整数k和k个正整数b0,b1,...,bk−1。
约束 -- 1 ≤ n,k ≤ 10^4; 1 ≤ a[i] ≤ 10^9 对于所有 0 ≤ i < n; 1 ≤ b[]j ≤ 10^9 对于所有 0 ≤ j < k;
输出格式 -- 对于从 0 到 k−1 的所有 i,输出一个索引 0 ≤ j ≤ n−1 使得 aj = bi 或 -1 如果没有这样的索引。
我在 C++11 编译器中使用代码块。我已经尝试过压力测试并在我的系统中得到了正确的结果。但是 coursera autograder 给了我未知信号 11。在某些问题中,它会给出未知信号 8。谁能告诉我这背后的可能原因。
int binary_search(const vector<long long> &a, long long x) {
size_t left = 0, right = (size_t)a.size()-1;
size_t mid = 0;
while(left<=right){
mid = (left+right)/2;
if(x < a[mid]){
right = mid-1;
}
else if(x > a[mid]){
left = mid+1;
}
else return mid;
}
return -1;
}
int main() {
size_t n;
std::cin >> n;
vector<long long> a(n);
for (size_t i = 0; i < a.size(); i++) {
std::cin >> a[i];
}
size_t m;
std::cin >> m;
vector<long long> b(m);
for (size_t i = 0; i < m; ++i) {
std::cin >> b[i];
}
for (size_t i = 0; i < m; ++i) {
//replace with the call to binary_search when implemented
std::cout << binary_search(a, b[i]) << ' ';
}
}
我在 autograder 中得到的实际结果。
Failed case #4/36: unknown signal 11 (Time used: 0.00/1.00, memory used: 40071168/536870912.)
最佳答案
如果 vector 具有例如大小 2,然后你初始化 left = 0
, right = 1
和 mid = 0
. left <= right
所以你计算mid = 0
并检查是否x < a[0]
. 如果发生这种情况,您现在设置 right = -1
。在无符号算术中,这是一个非常大的数字。你的循环继续,因为 0 <= really large number
, 你计算 mid = half of really large number
并在那里访问 vector 。那是 UB 并且会杀死您的程序。
切换到签名类型意味着 right = -1
确实小于left = 0
并终止循环。
关于c++ - 代码在我的系统中运行良好,但 coursera autograder 给我未知信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56472816/
使用 Mac 操作系统 10.10.3RStudio 版本 0.98.1103 我的工作目录是一个包含 332 个 .csv 文件的列表,我的设置是正确的。这是代码: pollutantmean <-
我在 coursera 上的 scala 中参加了 martin odersky 的函数式编程类(class)。 但是,我无法理解第二个作业 Funsets.scala 的解决方案。 type Set
我正在上一门算法课,现在我们正在学习贪婪算法。我的两个解决方案在某些测试用例上输出“未知信号 11”。 但是,我用尽可能大的输入将我的程序推向了极限。它在我的电脑上运行得很好。然而,在 Courser
我在 Coursera 上问了这个问题,但没有人回复,所以我来到这里。这是关于 Scala 函数式编程原理类(class)的最后一个作业(Anagrams)。 如果函数减法返回无序出现,Anagram
我想通过这些链接后面的程序(主要是 Python)提取 Coursera 视频下载链接 https://www.coursera.org/learn/human-computer-interactio
我正在使用 Coursera 的 jupyterNotebook,但没有办法将所有内容恢复到开头。 唯一相关的选项似乎是“恢复到检查点”——但我一开始没有保存检查点。 这是否意味着我无法恢复到它? 最
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2个月前关闭。 Improve th
我正在尝试从 OS X Mavericks 上的命令行运行 coursera-dl。 控制台输出如下: $ coursera-dl Traceback (most recent ca
来自那门类(class) https://class.coursera.org/progfun-004/assignment 我下载了 http://spark-public.s3.amazonaws
我目前正在为 coursera 上提供的创业工程类(class)学习 program 2 我正在使用 Amazon Web 服务使用 ubuntu 实例进行编程,但我的编程一直挂起。我的 node.j
在完成“Scala 中的函数式编程原则”@coursera 类(class)第 3 周的作业时,我发现当我实现视频类(class)中所示的函数联合时: override def union(tha
我正在尝试从 Julia 中的 Coursera 进行逻辑回归,但它不起作用。 计算梯度的 Julia 代码: sigmoid(z) = 1 / (1 + e ^ -z) hypotesis(thet
我正在 Coursera 上学习 Andrew Ng 的机器学习,方法是使用 Python 而不是 MATLAB 实现所有代码。 在编程练习 3 中,我以向量化形式实现了正则化逻辑回归成本函数: de
我在理解如何对 Coursera 上提供的机器学习类(class)中的函数进行矢量化时遇到问题。 在类(class)中,Andrew Ng 解释了假设可以向量化为 theta 乘以 x 的转置: H(
我从 MOOC 中学到了很多东西,所以我想为此返回一些东西我正在考虑在 kivy 中设计一个小应用程序,因此需要 python 实现,实际上我想要实现的是记录通过程序进入我的 Coursera 帐户并
任务 -- 此代码问题的目标是实现二分查找算法。 输入格式 -- 输入的第一行包含一个整数 n 和一个序列 a0 &a, long long x) { size_t left = 0, righ
当我尝试在 Angular 中使用 jsonp 方法请求 coursera api 时,出现以下错误。 Refused to execute script from 'https://api.cour
我正在用 C# 实现 Ng 的 OCR 神经网络示例。我认为我已经正确实现了所有公式[矢量化版本],并且我的应用程序正在训练网络。 关于如何看到我的网络在识别方面的改进,有什么建议吗 - 无需在训练完
我已经开始 Coursera Algorythms course .练习作业必须在Java上完成,他们建议使用DrJava作为IDE,但这真的很不方便。所以我想使用 Eclipse,但问题是我无法使用
我正在 coursera java 类(class)中做作业。作业是关于java中的统计数据,他们给了我一些文件,其中包含每个名字的出生数量,并想要每个名字的排名,例如hesham 15,ahmed
我是一名优秀的程序员,十分优秀!