Valid Triangle Number
Given an integer array nums, return the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle.
Example 1:
Input: nums = [2,2,3,4]
Output: 3
Explanation: Valid combinations are:
2,3,4 (using the first 2)
2,3,4 (using the second 2)
2,2,3
Example 2:
Input: nums = [4,2,3,4]
Output: 4
class Solution {
public int triangleNumber(int[] nums) {
Arrays.sort(nums); // Step 1: sort the array
int count = 0;
int n = nums.length;
// Step 2: fix the largest side
for (int k = n - 1; k >= 2; k--) {
int start = 0;
int end = k - 1;
// Step 3: use two pointers
while (start < end) {
if (nums[start] + nums[end] > nums[k]) {
count += (end - start); // all pairs from i to j-1 are valid
end--;
} else {
start++;
}
}
}
return count;
}
}
Comments
Post a Comment