在c++中查找数组中和等于零的所有唯一三元组
find all unique triplets in array with sum equal to zero in c++
你好,我参考了这个程序,在注释中提到//不要写int main()函数,当我运行这个代码时,它会给我错误:/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../lib64/crt1.o:in function _start':
(.text+0x20): undefined reference to
main'collect2:ld返回1退出状态
我为它写了主要内容,但它仍然不会编译,请对此问题提出任何建议。提前Thanx。我把我的代码写如下:-
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > vv;
if(num.size()<3){
return vv;
}
sort(num.begin(), num.end());
// In general, we can make the triples unique by the set trick
// For 3Sum, it is guaranteed by 1, 2, 3
for(int i = 0; i<num.size()-2; i++){
if(i>0 && num[i]==num[i-1]){ // 1
continue;
}
// convert 3Sum to 2Sum
int target = -num[i];
if(target<0){
break;
}
int j = i+1;
int k = num.size()-1;
while(j<k){
if(num[j]+num[k]==target){
vector<int> v;
v.push_back(num[i]);
v.push_back(num[j]);
v.push_back(num[k]);
vv.push_back(v);
}
if(num[j]+num[k]<=target){
// Don't forget ++
while(num[j++]==num[j] && j<k){}; // 2
}
else{
while(num[k--]==num[k] && k>j){}; // 3
}
}
}
return vv;
}
};
1-如果你想创建库(构建时链接或运行时链接),就不需要使用c++EntryPoint(我指的是main fuction)但是,如果你想创建一个可移植的可执行文件,你需要一个项目的入口点,为了构建这个代码,你需要g++的最新版本来支持c++14,如果你真的想构建一个运行库(.so),请在g++命令行中添加-shared选项
相关文章:
- 如何有效地找到数组中三元组和的最小差异?
- 黑客兰克中的错误比较三元组代码
- 在C++中生成字母的三元组
- 特征用三元组填充稀疏行主矩阵
- 求数组中三元组 (i, j, k) 的数量,使得 A[i] + A[j] = 2 * A[k]
- 为什么在 Gnu gcc/g++ 中解析三元组序列的字符串文字?
- 使用欧几里得公式求全毕达哥拉斯三元组
- 所有毕达哥拉斯的三元组都小于500
- 来自三元组的稀疏矩阵
- 如何在C++中对三元组进行排序
- 在最小执行时间内找到给定数组中和为零的所有唯一三元组
- 在c++中查找数组中和等于零的所有唯一三元组
- 将特征矩阵转换为C++形式的三元组
- 无法推断编译器目标三元组
- 动态编程/记忆(计数三元组)
- 寻找毕达哥拉斯三元组:欧几里得公式
- 我的三角三元组程序有一个问题
- 计算勾股三元组
- 如何使用 Clang 的 C++ API 从文件名/行/列三元组中获取源位置
- 优化C++中的三元组求和