-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathLargest Perimeter Triangle.cpp
55 lines (41 loc) · 1.43 KB
/
Largest Perimeter Triangle.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
Solution by Rahul Surana
***********************************************************
Given an integer array nums, return the largest perimeter of a triangle with a non-zero area, formed from three of these lengths.
If it is impossible to form any triangle of a non-zero area, return 0.
***********************************************************
*/
class Solution {
public:
int largestPerimeter(vector<int>& nums) {
sort(nums.begin(),nums.end());
int i = nums.size()-1, j = 0, k = i-1;
int m = 0;
while(i>=2){
if(nums[i] < (nums[i-1]+nums[i-2])){
m = max(nums[i] + nums[i-1] + nums[i-2],m);
break;
}
i--;
}
// 1st solution
// while(i > j && k > j ){
// if(nums[i] - nums[j] >= nums[k]){
// if(nums[i] - nums[k-1] >= nums[k]) { i--; k--; }
// else{
// j++;
// }
// }
// else if( nums[j] + nums[k] <= nums[i]){
// // if()
// j++;
// }
// else{
// m = max(nums[i] + nums[k] + nums[j],m);
// j++;
// }
// cout << nums[i] << " " << nums[j] << " " << nums[k] << "\n";
// }
return m;
}
};