976三角形的最大周长
题目:
给定由一些正数(代表长度)组成的数组 nums ,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0。
实例:示例 1:
输入:nums = [2,1,2] 输出:**5
示例 2:
输入:nums = [1,2,1] 输出:0
提示:
- 3 <= nums.length <= 104
- 1 <= nums[i] <= 106
我的思路:
1.几种排序方法都可,多用几次(最笨的)
2.动态规划(超时)
题解:
class Solution {public:int largestPerimeter(vector<int>& A) {sort(A.begin(), A.end());for (int i = (int)A.size() - 1; i >= 2; --i) {if (A[i - 2] + A[i - 1] > A[i]) {return A[i - 2] + A[i - 1] + A[i];}}return 0;}};
复杂度分析
- 时间复杂度:O(N \log N)O(N_log_N),其中 NN 是数组 AA 的长度。
- 空间复杂度:\Omega(\log N)Ω(logN)。
