c_cpp 给定一个整数数组,找到三元组,使得a ^ 2 + b ^ 2 = c ^ 2。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 给定一个整数数组,找到三元组,使得a ^ 2 + b ^ 2 = c ^ 2。相关的知识,希望对你有一定的参考价值。
vector<vector<int>> find_triplets(const vector<int>& A) {
vector<vector<int>> res;
int N = A.size();
if(N < 3) return res;
vector<long long> B;
for(int i : A) B.push_back(i*i); // gist! push the square values
// sort them in descending order not ascending order!
sort(B.begin(), B.end(), greater<int>());
for(int i=0; i<N-2; ++i) {
int j = i+1, k = N-1; // i+1 not i
while(j < k) { // < not <=
if(B[i] == B[j] + B[k]) {
res.push_back({A[i], A[j], A[k]});
++j; // forgot!!
--k;
}
else if(B[i] < B[j] + B[k]) j++;
else k--;
}
}
return res;
}
以上是关于c_cpp 给定一个整数数组,找到三元组,使得a ^ 2 + b ^ 2 = c ^ 2。的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp [阵] 3sum最近。给定n个整数的数组S,在S中找到三个整数,使得总和最接近给定数字target。 Retur
leetcode刷题
三数之和
三数之和
三数之和
三数之和