其他分享
首页 > 其他分享> > leetcode_611. 有效三角形的个数--未解决的枚举优化

leetcode_611. 有效三角形的个数--未解决的枚举优化

作者:互联网

leetcode_611

题目描述

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。

示例 1:

输入: [2,2,3,4]
输出: 3
解释: 有效的组合是:
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3

注意:

数组长度不超过1000。
数组里整数的范围为 [0, 1000]。
通过次数34,777提交次数66,576

来源:力扣(LeetCode)

题目大意

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。

思路描述

当前就一种思路:三重循环遍历枚举找出时间复杂度O(n^3)
应还有两种做法,

  1. 一种是 暴力枚举+二分查找法是暴力枚举破解的优化版本时间复杂度*O((log n)n^2)
  2. 第二种是 双指针方法时间复杂度O(n^2)

代码

三重循环遍历枚举:

class Solution {
	    public int triangleNumber(int[] nums) {
	    	Arrays.sort(nums);
	    	int sum=0;
	    	for(int a=0;a<nums.length-2;a++){
	    		for(int b=a+1;b<nums.length-1;b++){
	    			for(int c=b+1;c<nums.length;c++){
                        
	    				if(nums[a]+nums[b]>nums[c]&&nums[c]-nums[b]<nums[a]){
	    					sum++;
	    				}
	    			}
	    		}
	    	}
	    	return sum;
	    }
	}

在这里插入图片描述

写在最后

如果感觉写的还不错的话不妨分享给其他人,以求共同进步!

文章如有错误之处请指出,我会听取并改正!

标签:数组,nums,--,sum,611,int,枚举,复杂度,leetcode
来源: https://blog.csdn.net/Adorablenewbaby/article/details/119390806