美文网首页
2020-04-18

2020-04-18

作者: 木马音响积木 | 来源:发表于2020-04-18 10:21 被阅读0次

    针对第11 题,盛最多水的容器。
    首先,搞懂左右指针,去掉短的指针,的意思,就是,边界是短指针的,最大值记录了,你可以出去玩啦

    而在实际的写代码中,不知不觉,多做了很多工作,做了两遍。对比
    引用代码,绝无贬低他人的意思,,因为我看到题目时,直接写的是 return i_do_not_know

    class Solution:
        def maxArea(self, height: List[int]) -> int:
            big,l, r = 0,0, len(height) - 1
            while l < r:
                big = max(big, min(height[l], height[r]) * (r - l) )
                if height[l] < height[r]: l += 1
                else:r -= 1
            return big
    

    代码看起来,没有问题,但是,height[l] < height[r] 比较了两次。两次!!!

    优化了,如果看不懂,看第3版本。

    class Solution:
        def maxArea(self, height: List[int]) -> int:
            ans=0
            h=height
            ll,r=0,len(h)-1
            while ll<r:
                if h[ll]<h[r]:
                    t=(r-ll)*h[ll]  #直接就知道谁小啦
                    ll+=1
                else:
                    t =(r-ll)*h[r]
                    r -=1
                ans=ans if ans>t else t
               #ans=max(ans,t)
            return ans
    
    class Solution:
        def maxArea(self, height: List[int]) -> int:
            maxans=0
            '''
            for i in range(0,len(height)-1):
                for j in range(i+1, len(height)):
                    hh= min(height[i],height[j])* (j-i)
                    if hh >maxans :maxans=hh
            '''      
            left=0
            right=len(height)-1
            while left <right:
                if height[left] > height[right]:
                    hh= min(height[left],height[right])* (right-left)
                    if hh >maxans :maxans=hh                
                    right -=1
                else:
                    hh= min(height[left],height[right])* (right-left)
                    if hh >maxans :maxans=hh                  
                    left +=1
            return maxans
    

    min(height[left],height[right]) 是不是 guai? 细细看自己的代码,优化来自数学,也来自写的过程中。

    另外,如果 < 已经能够解决问题,不要用 <= 在这个题目里。

    相关文章

      网友评论

          本文标题:2020-04-18

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