Question 3 Valid Triangle Number
https://leetcode.com/problems/valid-triangle-number/description/
理解题目
Method 1
// Some code
public int triangleNumber(int[] nums) {
if (nums == null || nums.length < 3) {
return 0;
}
Arrays.sort(nums);
int count = 0;
for (int largeEdgeIndex = 2; largeEdgeIndex < nums.length; largeEdgeIndex++) { //固定的边是最长的longest Edge
count += sumLargerThan(nums, nums[i], 0, largeEdgeIndex - 1); // 你要找的点是在这个最大边之前
}
return count;
}
private int sumLargerThan(int[] nums, int target, int left, int right) {
int count = 0;
while (left < right) {
int curSum = nums[left] + nums[right];
if (curSum < target){
left++;
} else {
count += (right - left);
right --;
}
}
return count;
}Follow up: find all pairs?
Last updated