LeetCode-11-盛最多水的容器

最大盛水量算法
本文介绍了一种求解两直线间最大盛水量的问题,并给出了两种不同的算法实现方式。第一种方法虽然直观但时间复杂度较高;第二种方法通过双指针技巧实现了更高效的解决方案。
/*
    11.给定 n 个非负整数 a1a2...an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai)  (i, 0)    找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
    注意:你不能倾斜容器,n 至少是2
 */
//解法一,顺着题意的思路,结果正确,但是时间复杂度为O(n^2),效率低,时间超时,无法提交至LeetCode
    public static int maxArea(int[] height) {
        int maxArea = 0;
        for (int i = 0; i < height.length - 1; i++)
            for (int j = i + 1; j < height.length; j++)
                maxArea = Math.max( maxArea, height[i] > height[j] ? height[j] * (j - i) : height[i] * (j - i) );
        return maxArea;
    }

    //解法二,时间复杂度为O(n),效率大大提高,画个图就很容易理解了,从两边向中间靠计算面积
    public static int maxArea2(int[] height) {
        int ln = 0, rn = height.length - 1, maxArea = 0;
        while (ln < rn) {
            maxArea = Math.max( maxArea, height[ln] > height[rn] ? height[rn] * (rn - ln) : height[ln] * (rn - ln) );
            if (height[ln] > height[rn]) rn--;
            else ln++;
        }
        return maxArea;
    }


内容概要:本文介绍了悬臂梁的有限元分析方法,重点采用多重网格高斯-赛德尔迭代法求解有限元方程,并提供了完整的Matlab代码实现。文章系统阐述了有限元法的基本原理,包括单元划分、刚度矩阵组装、边界条件处理及数值求解流程,结合多重网格技术提升求解效率,有效解决了传统迭代方法在大规模问题中收敛慢的问题。通过具体算例验证了该方法的准确性高效性,展示了从建模到结果可视化的完整过程。; 适合人群:具备有限元基础理论知识和Matlab编程能力的力学、土木、机械等工程领域研究生或科研人员;适用于从事结构分析、数值计算方法研究的相关技术人员。; 使用场景及目标:①掌握有限元法在悬臂梁问题中的建模实现过程;②理解并应用多重网格法加速高斯-赛德尔迭代的数值求解技术;③通过Matlab代码实践提升对数值算法悬臂梁的有限元分析,采用多重网格高斯-赛德尔方法求解(Matlab代码实现)工程仿真结合的能力;④为复杂结构的高效数值模拟提供方法参考和技术支持。; 阅读建议:建议读者结合有限元教材同步学习,重点关注刚度矩阵的形成边界条件施加细节,动手运行并调试提供的Matlab代码,尝试改变网格密度或材料参数以观察对结果的影响,深入理解多重网格算法在提升计算效率方面的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值