LeetCode 976. 三角形的最大周长
题目描述
思路分析
解法一:排序后贪心(推荐)
核心思路:
- 将数组排序。
- 对于降序三元组,只要满足
a < b + c即可组成三角形。- 从最大开始检查,首个满足条件的周长最大。
复杂度分析:
- 时间复杂度:O(n log n),排序开销。
- 空间复杂度:O(1) 或 O(log n)。
import java.util.Arrays;
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] + nums[i - 1] + nums[i - 2];
}
}
return 0;
}
}
import "sort"
func largestPerimeter(nums []int) int {
sort.Ints(nums)
for i := len(nums) - 1; i >= 2; i-- {
if nums[i-2]+nums[i-1] > nums[i] {
return nums[i] + nums[i-1] + nums[i-2]
}
}
return 0
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 976. 三角形的最大周长 | 简单 | 排序 |
| 611. 有效三角形的个数 | 中等 | 排序、双指针 |
| 812. 最大三角形面积 | 简单 | 几何 |
| 16. 最接近的三数之和 | 中等 | 排序、双指针 |
| 18. 四数之和 | 中等 | 排序、双指针 |
| 259. 较小的三数之和 | 中等 | 排序、双指针 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!