611:有效三角形的个数(二分法)

This commit is contained in:
huangge1199@hotmail.com 2021-08-04 19:44:15 +08:00
parent 8882bfbe4e
commit ede6b0a012

View File

@ -40,11 +40,23 @@ class ValidTriangleNumber {
int count = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = i - 1; j >= 0; j--) {
int k = 0;
while (k < j && nums[j] + nums[k] <= nums[i]) {
k++;
// int k = 0;
// while (k < j && nums[j] + nums[k] <= nums[i]) {
// k++;
// }
// count += j - k;
int start = 0, end = j - 1;
while (start < end) {
int mid = start + end >> 1;
if (nums[mid] + nums[j] > nums[i]) {
end = mid;
} else {
start = mid + 1;
}
}
if (start == end && nums[end] + nums[j] > nums[i]) {
count += j - end;
}
count += j - k;
}
}
return count;