美文网首页
11. 盛最多水的容器

11. 盛最多水的容器

作者: 邦_ | 来源:发表于2022-07-26 10:51 被阅读0次

    最容易想到的暴力法。。 时间复杂度是o(n²) 提交后就会发现。超时。。有个很长的测试用例

    func maxArea(_ height: [Int]) -> Int {
    
            let len = height.count
            var maxValue = 0
            for i in  0..<len - 1 {
                
                for j in i+1..<len {
                    maxValue = max(maxValue, (j - i) * min(height[i], height[j]))
                    
                }
            }
    
           return maxValue
        
        }
    
    

    然后左右指针 原理啊= =。。 就是 当一遍的值比较小的时候。。 最大的值 只会在较小的一端收缩后得到
    时间上虽然是o(n)级别了。。 但是依旧有很多没有用的组合需要过滤

    
    func maxArea(_ height: [Int]) -> Int {
    
            let len = height.count
            var maxValue = 0 , l = 0 ,r = len - 1
            
            while l < r {
                
                let leftValue = height[l]
                let rightValue = height[r]
            
                if leftValue < rightValue {
                    maxValue = max(maxValue, (r - l) * leftValue)
                    l += 1
                    
                    
                }else {
                    maxValue = max(maxValue, (r - l) * rightValue)
                    r -= 1
                }
    
            }
    
           return maxValue
        
        
        }
    
    

    优化版本

    
    func maxArea(_ height: [Int]) -> Int {
    
            let len = height.count
            var maxValue = 0 , l = 0 ,r = len - 1
            
            while l < r {
                
                let leftValue = height[l]
                let rightValue = height[r]
            
                if leftValue < rightValue {
                    maxValue = max(maxValue, (r - l) * leftValue)
                    while (l < r && leftValue >= height[l]) {
                        l += 1
                    }
                    
                    
                }else {
                    maxValue = max(maxValue, (r - l) * rightValue)
                    while (l < r && height[r] <= rightValue) {
                        r -= 1
                    }
                }
    
            }
    
           return maxValue
        
        
        }
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:11. 盛最多水的容器

          本文链接:https://www.haomeiwen.com/subject/rbbgirtx.html