LeetCode: #611有效三角形的个数

阅读 59

2022-02-10

思路:相当于三数相加的一个变种

Code:

class Solution {
    public int triangleNumber(int[] nums) {
        int count = 0;
        if (nums == null || nums.length < 3) {
            return count;
        }
        //先把无序数组排序 nlogn
        //[-4, -1, -1, 0, 1, 2]
        Arrays.sort(nums);
        for (int c = nums.length - 1; c > 1; c--) { 
            //a 从0开始遍历    
            int a = 0;
            //从c的前一个开始遍历
            int b = c - 1;
            while (a < b) {
                //c>b>a 这个是永远成立的
                //所以 nums[a] + nums[c] > nums[b] && nums[b] + nums[c] > nums[a] 永远为true
                if (nums[a] + nums[b] > nums[c] ) {
                    //记录结果
                   count += (b-a); 
                    //移位
                    b--;
                    //去除重复
                }else {
                    //不满足就a++
                    a++;
                }
 
            }
        }
 
        return count;

    }
}

 

精彩评论(0)

0 0 举报