ID | Title | Difficulty | |
---|---|---|---|
Loading... |
611. Valid Triangle Number
Medium
LeetCode
Array, Two Pointers, Binary Search, Greedy, Sorting
Problem
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
Constraints:
- 1 <= nums.length <= 1000
- 0 <= nums[i] <= 1000
Code
class Solution {
public int triangleNumber(int[] nums) {
Arrays.sort(nums);
int res = 0;
for (int i = nums.length - 1; i >= 2; i--) {
int left = 0;
int right = i - 1;
while (left < right) {
if (nums[left] + nums[right] > nums[i]) {
res += right - left;
right--;
} else {
left++;
}
}
}
return res;
}
}
按 <- 键看上一题!
610. Triangle Judgement
按 -> 键看下一题!
612. Shortest Distance in a Plane