当前位置: 首页> 教育> 幼教 > 专业做英文网站的公司_梵克雅宝四叶草项链专柜价格图片_成都网络营销公司哪家好_微信客户管理系统

专业做英文网站的公司_梵克雅宝四叶草项链专柜价格图片_成都网络营销公司哪家好_微信客户管理系统

时间:2025/7/12 6:03:01来源:https://blog.csdn.net/black_bear_white/article/details/147523726 浏览次数:0次
专业做英文网站的公司_梵克雅宝四叶草项链专柜价格图片_成都网络营销公司哪家好_微信客户管理系统

一、题目解析

这里需要得出所有符合条件的三角形组合,并且当有重复元素时,如2,3,4用的是第一个2,3,4用的第二个2一样。

二、算法解析

通过数学知识,给我们三个数,就可以判断是否能构成三角形

 

我们可以先对数组进行排序,来达到a<=b<=c的情况,减少判断次数。

解法1:暴力解法 O(n^3)

由于需要三个数,所以通过三层for循环,用于枚举出所有排列可能,然后根据上面的条件判断是否满足条件。

解法2:根据单调性,使用双指针 O(n^2)

由于我们对数组先做排序处理,即最后的元素为最大的元素,固定最大元素,left在开头位置,right在固定最大的元素的前一个位置,通过双指针找出符合条件的三角形。

遍历数组固定最大值,然后通过双指针快速统计出符合区要求的三角形个数。

枚举最大的数为n次,每次都要通过双指针遍历数组也是n,所以时间复杂度为O(n^2) 

可以先根据解析去自己完成代码,链接:611. 有效三角形的个数 - 力扣(LeetCode) 

三、代码示例

class Solution {
public:int triangleNumber(vector<int>& nums) {int sum = 0;sort(nums.begin(),nums.end());//使用sort对数组进行排序,这里的begin()和end()为迭代器for(int i = nums.size()-1;i>=2;i--){int left = 0,right = i-1;//每次固定最大值,双指针也需要更新,所以在循环内定义while(right != left){if(nums[left] + nums[right] > nums[i]){sum += right - left;right--;}else left++;}}return sum;}
};

 

看到最后,如果对您有所帮助还请留下一个免费的赞和收藏吧,我们下期再见! 

关键字:专业做英文网站的公司_梵克雅宝四叶草项链专柜价格图片_成都网络营销公司哪家好_微信客户管理系统

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: