盛最多水的容器 - Rust

image.png

image.png

题目解析
采用双指针,从头和尾分别移动,每一次移动 height[i],height[j] 小的那一个

/// https://leetcode.cn/problems/container-with-most-water/
pub fn max_area(height: Vec<i32>) -> i32 {
    //  采用双指针,从头和尾分别移动,每一次移动 height[i],height[j] 小的那一个
    let (mut max, mut left,mut right) = (0,0,height.len()-1);
    while left<right {
        max = max.max((right-left)as i32 * height[left].min(height[right]));
        if height[left] < height[right]{
            left += 1;
        }else {
            right -= 1;
        }
    }
    max
}

复杂度分析
空间复杂度: O(1)。
时间复杂度: O(n)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容