LeetCode双指针

611. 有效三角形的个数

图片说明

双指针

  1. 首先对数组排序。
  2. 固定最长的一条边,运用双指针扫描
  3. 如果 nums[l] + nums[r] > nums[i],同时说明 nums[l + 1] + nums[r] > nums[i], ..., nums[r - 1] + nums[r] > nums[i],满足的条件的有 r - l 种,r 左移进入下一轮。
  4. 如果 nums[l] + nums[r] <= nums[i],l 右移进入下一轮。
  5. 枚举结束后,总和就是答案。
  6. 时间复杂度为 O(n^2)
class Solution {
    public int triangleNumber(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }
        Arrays.sort(nums);
        int n = nums.length;
        int res = 0;
        for(int i = n-1 ; i >= 0 ; i-- ){
            int sum = nums[i];
            int left = 0;
            int right = i-1;
            while(left < right){
                if(nums[left] + nums[right] > sum){
                    res += right - left;
                    right--;
                }else{
                    left++;
                }
            }
        }
        return res;

    }
}
全部评论

相关推荐

昨天 13:47
门头沟学院 Java
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
07-11 10:56
门头沟学院 Java
码客明:大胆的说自己能实习6个月就行
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务