Triangle Count
程序员文章站
2024-03-06 20:15:44
...
Given an array of integers, how many three numbers can be found in the array, so that we can build an triangle whose three edges length is the three numbers that we find?
Example
Given array S = [3,4,6,7]
, return 3
.
They are:
[3,4,6]
[3,6,7]
[4,6,7]
Given array S = [4,4,4,4]
, return 4
.
They are:
[4(1),4(2),4(3)]
[4(1),4(2),4(4)]
[4(1),4(3),4(4)]
[4(2),4(3),4(4)]
两边之和大于第三边,是使用两个较小的边与最大的一条边进行比较
java
public class Solution {
/*
* @param S: A list of integers
* @return: An integer
*/
public int triangleCount(int[] nums) {
// write your code here
if (nums == null || nums.length < 3) {
return -1;
}
int count = 0;
Arrays.sort(nums);
for (int i = nums.length - 1; i >= 2; i--) {
count += twoSum(nums, i - 1, nums[i]);
}
return count;
}
private int twoSum(int[] nums, int end, int target) {
int left = 0, right = end, sum = 0, count = 0;
while (left < right) {
sum = nums[left] + nums[right];
if (sum <= target) {
left++;
} else {
count += (right - left);
right--;
}
}
return count;
}
}
推荐阅读
-
Triangle Count
-
【luogu P2633】Count on a tree
-
mysql count带条件查询
-
count does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manu
-
详细解读MySQL中COUNT函数的用法
-
详细解读MySQL中COUNT函数的用法
-
MySQL中distinct和count(*)的使用方法比较
-
mysql技巧之select count的区别分析
-
MYSQL中统计查询结果总行数的便捷方法省去count(*)
-
浅析一个MYSQL语法(在查询中使用count)的兼容性问题