- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:
给定这样的输入:
int myintsA[]={1,3,3,2,2,5,5,5,4};
int myintsB[]={0,9,8,6,7,3,3,4};
找到相同的元素,输出。当它们同时出现 2 次时。输出为 2 倍。
例如:
输出: {3,3,4}
#include <iostream>
#include <vector>
#include <list>
#include <ext/hash_map>
using namespace __gnu_cxx;
using namespace std;
list<int> findDup(const vector<int>& A ,const vector<int>& B)
{
list<int> idx;
std::vector<int>::size_type i = 0;
std::vector<int>::size_type j = 0;
while(i < A.size() && j < B.size()) {
if (A[i] == B[j])
{
idx.push_back(A[i]);
i++;
j++;
}
else if(A[i] < B[j])
{
i++;
}
else if (A[i] > B[j])
{
j++;
}
}
return idx;
}
int main()
{
int myintsA[]={1,3,2,2,5,5,5,4};
int myintsB[]={0,9,8,6,7,3,3,4};
vector<int> myvectorA (myintsA, myintsA + sizeof(myintsA) / sizeof(int) );
vector<int> myvectorB (myintsB, myintsB + sizeof(myintsB) / sizeof(int) );
sort(myvectorA.begin(),myvectorA.end());
sort(myvectorB.begin(),myvectorB.end());
list<int> result = findDup(myvectorA, myvectorB);
for(list<int>::iterator iter = result.begin(); iter!=result.end();++iter)
{
printf("%c",*iter);
}
return 0;
}
但是我的程序好像有问题。需要帮忙!谢谢!
最佳答案
这是之前发布的代码的工作版本:
#include <iostream>
#include <vector>
#include <list>
#include <algorithm> //It's better to use the standard <algorithm> header here for sort.
//using <ext/hash_map> just for the sort functionality is not a great idea because it makes the code less clear and also creates portability issues.
using namespace __gnu_cxx;
using namespace std;
list<int> findDup(const vector<int>& A ,const vector<int>& B)
{
list<int> idx;
std::vector<int>::size_type i = 0;
std::vector<int>::size_type j = 0;
while(i < A.size() && j < B.size()) { //as pointed out before this is the source of the error
if (A.at(i) == B.at(j))
//using the .at(i) will throw an exception if anything goes out of range of the container.
//Operator [] doesn't provide this safety.
{
idx.push_back(A.at(i));
i++;
j++;
}
else if(A.at(i) < B.at(j))
{
i++;
}
else if (A.at(i) > B.at(j))
{
j++;
}
}
return idx;
//you didn't actually return anything before
}
int main()
{
int myintsA[]={1,3,3,2,2,5,5,5,4};
int myintsB[]={0,9,8,6,7,3,3,4};
vector<int> myvectorA (myintsA, myintsA + sizeof(myintsA) / sizeof(int) );
vector<int> myvectorB (myintsB, myintsB + sizeof(myintsB) / sizeof(int) );
sort(myvectorA.begin(),myvectorA.end());
sort(myvectorB.begin(),myvectorB.end());
list<int> result = findDup(myvectorA, myvectorB);
for(list<int>::iterator iter = result.begin(); iter!=result.end();++iter)
{
cout<< *iter ;
//using cout is generally safer and more idiomatic c++
}
cout << endl;
return 0;
}
主要问题是最后发生的边缘情况。有几点需要注意:如果您使用 .at(i)
语法,您会抛出一个 std::out_of_range ,这会为您指出正确的方向来发现问题。此外,如果您使用 -Wall
进行编译,您会收到关于第一个函数未返回任何内容的警告。
关于c++ - 循环永无止境??~需要帮助。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5131694/
下面的代码永远不会结束。这是为什么? #include #include #include #define SIZE 5 int nums[SIZE] = {0, 1, 2, 3, 4}; in
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我在 Node 中的 promise 方面遇到了问题,特别是在下面的代码中,我编写这些代码是为了执行 MySQL 查询,以便我的所有其他 100 多个函数可以共享它,而不是内联编写它。来自 PHP 开
我需要从表中删除重复项,同时保留一项。由于在 where 语句内的子查询中访问同一个表时无法从表中删除,因此我决定将受影响的 ID 存储在临时表中: create temporary my_temp_
我有以下 json 对象: "comments": [ {"username": "test", "comment": "This is a comment", "child": [
我正在尝试学习如何使用 hadoop 流。我正在尝试运行一个非常简单的映射器,并且没有缩减器。当我运行该程序时,它完成了 100% 的 map task ,然后在十分钟内什么都不做,然后报告它已完成所
我正在为 git 可执行文件创建一个简单的 Java 包装器,我想在我的应用程序中使用它。一个小代码示例: public static void main(String[] args) {
我正在学习react.js,并且我使用安装了react-tools的npm。但是在我输入命令: jsx --watch src/build/后,我对 jsx 文件做了一些更改。控制台日志: app.j
今天我下载了 Visual Studio 2012 的更新 4。我已经从Microsoft网站下载了文件VS2012.4.exe。我已从命令行“VS2012.4.exe/layout”运行此文件。这已
有时,在我搜索某些内容(或不小心单击“搜索定义”)后,主要是在 PHP 文件中,VS 开始永无止境的(运行蓝线)搜索(并且我在此期间听到 CPU 负载)。但是,我不能取消那个,没有 Esc 和 Ctr
我在 MySQL 上遇到性能问题。数据库包含大约40万条记录,站点在Drupal上运行,所有列都有索引。不幸的是,有些广告没有所有数据,所以我需要使用 LEFT JOIN 而不是 INNER JOIN
我是一名优秀的程序员,十分优秀!