题目:
给定由一些正数(代表长度)组成的数组
nums
,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回0
。示例 1:
输入:nums = [2,1,2] 输出:5 解释:你可以用三个边长组成一个三角形:1 2 2。示例 2:
输入:nums = [1,2,1,10] 输出:0 解释: 你不能用边长 1,1,2 来组成三角形。 不能用边长 1,1,10 来构成三角形。 不能用边长 1、2 和 10 来构成三角形。 因为我们不能用任何三条边长来构成一个非零面积的三角形,所以我们返回 0。提示:
3 <= nums.length <= 10^4
1 <= nums[i] <= 10^6
我一开始以为先排序,然后移动窗口,结果,后来发现又是写复杂了......
移动窗口版:文章来源:https://www.toymoban.com/news/detail-826028.html
class Solution {
public int largestPerimeter(int[] nums) {
Arrays.sort(nums);
int Len = nums.length;
int right= Len-1;
int left = Len-3;
while(left>=0){
int mid = (right + left) / 2;
if(nums[right] >= nums[left]+nums[mid]){
right--;
left--;
}else{
return nums[left] + nums[mid] + nums[right];
}
}
return 0;
}
}
精简版:文章来源地址https://www.toymoban.com/news/detail-826028.html
class Solution {
public int largestPerimeter(int[] nums) {
Arrays.sort(nums);
for(int i = nums.length - 1; i >= 2; i--){
if(nums[i - 2] + nums[i - 1] > nums[i]){
return nums[i - 2] + nums[i - 1] + nums[i];
}
}
return 0;
}
}
到了这里,关于Leetcode-976. 三角形的最大周长的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!