判定是否是个三角形的充要条件:
较小的两条边>第三条边 则 可以放构成三角形
证明过程就不复述了,乖乖回去看高中数学。
image.png
- code C++:
//move right
int triangleCount(vector<int> &S) {
sort(S.begin(), S.end());
int n = S.size();
int ans = 0;
for(int i = 2; i < n; i++) {
int left = 0, right = i - 1;
while (left < right) {
if (S[left] + S[right] > S[i]) {
ans += right - left;
right--;
}
else
left++;
}
}
return ans;
}
网友评论