0
点赞
收藏
分享

微信扫一扫

leetcode 611. 有效三角形的个数

琛彤麻麻 2022-04-02 阅读 51
c语言

int cmp(const void *a, const void *b) {
    return *(int *)b - *(int *)a;
}

int triangleNumber(int* nums, int numsSize){
    int i, j, k;
    int ans = 0;
    
    qsort(nums, numsSize, sizeof(int), cmp);//从大到小进行排列       
    for(i = 0; i <=numsSize-2; ++i) {       //确定一个最大的边(三角形满足就是最大的边小于剩下两个边的和)
    int l = i+1,r = numsSize-1;//利用双指针进行确定
    while(l<r){
        if(nums[l] + nums[r]<=nums[i]){
            r--;  
        }
        else{
            ans+=r-l;  //l-r的意思是当满足条件的时候,l到r的之间的数全满足,所以利用l-r进行计算
            l++;
        }
    }
    }
    return ans;
 
}

举报

相关推荐

0 条评论