每日一题 611有效三角形的个数(相向双指针)

这篇具有很好参考价值的文章主要介绍了每日一题 611有效三角形的个数(相向双指针)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。

示例 1:

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

示例 2:文章来源地址https://www.toymoban.com/news/detail-643602.html

输入: nums = [4,2,3,4]
输出: 4

题解

class Solution {
    public int triangleNumber(int[] nums) {
        Arrays.sort(nums); //对数组排序 增加条件
        int ans = 0;
        //依次枚举每个元素 定义双指针left和right 
        //如果nums[left] + nums[right] <= nums[i]则向右移动left 
        //nums[left]和nums[right]是小的两个数
        for (int i = 0; i < nums.length; i++) {
            for (int right = i - 1, left = 0; left < right; right--) {
                while (left < right && nums[left] + nums[right] <= nums[i]) {
                    left++;
                }
                //nums[left] nums[right] nums[i] 符合答案
                //第一个元素换成nums[left + 1]...nums[right - 1] 依然符合答案
                //所以个数为right-1-left+1=right-left
                ans += right - left;
            }
        }
        return ans;
    }
}

到了这里,关于每日一题 611有效三角形的个数(相向双指针)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「优选算法刷题」:有效三角形的个数

    给定一个包含非负整数的数组  nums  ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 示例 2: 这道题,有一点挺新鲜的:构成三角形的三条边,仅需满足 2 条最短边之和大于等于第三条边即可。 以前的罗根,就总是傻傻地求 3 次😭 今天这道题,算是又打开了我新世

    2024年01月20日
    浏览(28)
  • 双指针算法实例5(有效三角形的个数)

    给定一个包含非负整数的数组  nums  ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 示例 2: 提示: 1 = nums.length = 1000 0 = nums[i] = 1000 三角形构成条件:任意两边之和一定要大于第三边 其实在判断中,只需要判断 最小的两边和大于最长的一边 即可 假设 a=b=c 若要构成

    2024年02月11日
    浏览(34)
  • 【算法专题突破】双指针 - 有效三角形的个数(5)

    目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 题目链接:611. 有效三角形的个数 - 力扣(Leetcode)  我们可以根据示例1来理解这一道题目, 他说数组里面的数可以组成三角形三条边的个数, 那我们先自己枚举一下所有情况看看:  【2, 2, 3】  【2, 2, 4】  【2,

    2024年02月10日
    浏览(34)
  • 【LeetCode】双指针妙解有效三角形的个数

    Problem: 611. 有效三角形的个数 首先我们来分析一下本题的思路 看到题目中给出的示例 题目的意思很简单,就是将给到的数字去做一个组合,然后看看这三条边是否可以构成三角形。那判断的方法不用我说,相信大家如果读过小学的话应该都明白的,即 三角形两边之和大于第

    2024年02月10日
    浏览(31)
  • AcWing 898. 数字三角形 (每日一题)

    像数组下标 出现 i-1 的,在循环的时候从 i=1 开始。 0x3f3f3f3f : 1061109567 Integer.MAX_VALUE : 2147483647 在选用 Integer.MAX_VALUE 时,很可能会出现 数据溢出 。 所以在用 Integer.MAX_VALUE 时 需要先取 MAX 再加 a[i][j]; 注:做 数字三角形 这题时, 初始化时需要注意一下边界 。 由于我们 状态计

    2024年02月11日
    浏览(30)
  • 【C语言每日一题】08. 字符三角形

    题目来源:http://noi.openjudge.cn/ch0101/08 总时间限制: 1000ms 内存限制: 65536kB 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入只有一行, 包含一个字符。 该字符构成的等腰三角形,底边长5个字符,高3个字符。

    2024年02月10日
    浏览(27)
  • 【算法挨揍日记】day03——双指针算法_有效三角形的个数、和为s的两个数字

       611. 有效三角形的个数 https://leetcode.cn/problems/valid-triangle-number/ 给定一个包含非负整数的数组  nums  ,返回其中可以组成三角形三条边的三元组个数。 本题是一个关于三角形是否能成立的题目,首先我们假设三角形的三边(a,b,c),我们要保证两边之和大于第三边    题

    2024年02月12日
    浏览(38)
  • C/C++每日一练(20230314) 移动数组元素、搜索二维矩阵、三角形最小路径和

    目录 1. 移动数组中的元素 2. 搜索二维矩阵 3. 三角形最小路径和 🌟 每日一练刷题专栏 🌟 Golang 每日一练 专栏 C/C++ 每日一练 ​专栏 Python 每日一练 专栏 Java 每日一练 专栏 将一维数组中的元素循环左移 k 个位置 输入: 第 1 行是一维数组元素的个数 n (数组大小) 第 2 行是

    2024年02月13日
    浏览(32)
  • 每日一练26&&27——变态跳台阶&&快到碗里来&&不用加减乘除做加法&&三角形

    题目链接: 这个题目很容易理解,但公式推导有些麻烦 假定第一次跳的是1阶,那么 剩下 的是n-1个台阶,跳法是f(n-1); 假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2); 假定第一次跳的是3阶,那么剩下的是n-3个台阶,跳法是f(n-3) … 假定第一次跳的是n-1阶,那

    2023年04月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包