栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode 611. 有效三角形的个数(DAY 182)---- 二分查找学习期

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode 611. 有效三角形的个数(DAY 182)---- 二分查找学习期

文章目录
    • 原题题目
    • 代码实现(首刷天才解法^^ C++)


原题题目


代码实现(首刷天才解法^^ C++)

这个思路解出来发现是对的之后 也把我惊到了
**首先total_ret利用了从n个数中选3个的全排列知识 因为无法利用双指针直接求能够构成三角形的数 然后就利用了先求无法构成三角形的数 减去即可得能够构成三角形的总数^^ **

class Solution {
public:
    int triangleNumber(vector& nums) {
        if(nums.size() < 3)   return 0;
        int sub_ret = 0,total_ret = (nums.size()*(nums.size()-1)*(nums.size()-2))/6;
        sort(nums.begin(),nums.end());
        for(int i=nums.size()-1;i>=2;--i)
        {
            int left = 0,right = i-1;
            while(left < right)
            {
                if(nums[left] + nums[right] > nums[i])   --right;
                else
                {
                    sub_ret += (right - left);
                    ++left;
                }
            }
        }
        return total_ret - sub_ret;
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/289859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号