NC254. 合法的三角形个数
描述
示例1
输入:
[2,3,4,4]
输出:
4
说明:
C++ 解法, 执行用时: 5ms, 内存消耗: 408KB, 提交时间: 2022-06-27
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ /*int validTriangleNumber(vector<int>& nums) { // write code here int length = (int)nums.size(); sort(nums.begin(), nums.end()); int res = 0; for(int i=0;i<length;i++){ for(int j=i+1;j<length;j++){ for(int k=j+1;k<length;k++) if(nums[i]+nums[j]>nums[k]) res++; } } return res; }*/ int validTriangleNumber(vector<int>& nums) { // write code here int length = (int)nums.size(); sort(nums.begin(), nums.end()); int res = 0,i=length-1; while(i>=2){ int left=0,right=i-1; while(left<right){ if(nums[left]+nums[right]>nums[i]){ res+=(right-left); right--; }else left++; } i--; } return res; } };
C++ 解法, 执行用时: 5ms, 内存消耗: 424KB, 提交时间: 2022-05-08
class Solution { public: int validTriangleNumber(vector<int>& a) { int n = a.size(); sort(a.begin(), a.end()); int m = 0; for (int i = n - 1; i >= 2; i--) { int b = 0, c = i - 1; while ( b < c) { if (a[b] + a[c] > a[i]) { m += (c - b); c--; } else { b++; } } } return m; } };
C++ 解法, 执行用时: 5ms, 内存消耗: 428KB, 提交时间: 2022-03-10
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int validTriangleNumber(vector<int>& nums) { // write code here int n = nums.size(); sort(nums.begin(), nums.end()); int ret = 0; for (int i = n - 1; i >= 2; i--) { int l = 0, r = i - 1; while (l < r) { if (nums[l] + nums[r] > nums[i]) { ret += (r - l); r--; } else { l++; } } } return ret; } };
C++ 解法, 执行用时: 5ms, 内存消耗: 432KB, 提交时间: 2022-06-09
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int validTriangleNumber(vector<int>& nums) { // write code here int n=nums.size(); sort(nums.begin(),nums.end()); int m=0; for(int i=n-1;i>=2;i--){ int l=0,r=i-1; while(l<r){ if(nums[l]+nums[r]>nums[i]){ m+=(r-l); r--; } else l++; } } return m; } };
C++ 解法, 执行用时: 5ms, 内存消耗: 472KB, 提交时间: 2022-07-25
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int validTriangleNumber(vector<int>& nums) { // write code here int length = (int)nums.size(); sort(nums.begin(), nums.end()); int res = 0,i=length-1; while(i>=2){ int left=0,right=i-1; while(left<right){ if(nums[left]+nums[right]>nums[i]){ res+=(right-left); right--; }else left++; } i--; } return res; } };