本文主要是介绍Leetcode-976. 三角形的最大周长,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
给定由一些正数(代表长度)组成的数组
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
我一开始以为先排序,然后移动窗口,结果,后来发现又是写复杂了......
移动窗口版:
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;}
}
精简版:
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. 三角形的最大周长的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!