程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

python面试题(22)

字典(0)

标签  

python面试(18)

字典(0)

日期归档  

2023-05(3)

LeetCode刷题笔记——#11.盛最多水的容器移除元素

发布于2020-02-24 22:29     阅读(207)     评论(0)     点赞(20)     收藏(1)


难度:中等

一、题目描述:

在这里插入图片描述

二、解题:

1、暴力法

  在这种情况下,我们将简单地考虑每对可能出现的线段组合并找出这些情况之下的最大面积。
在这里插入图片描述

2、双指针法

  这种方法背后的思路在于,两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。

  我们在由线段长度构成的数组中使用两个指针,一个放在开始,一个置于末尾。 此外,我们会使用变量 maxarea来持续存储到目前为止所获得的最大面积。 在每一步中,我们会找出指针所指向的两条线段形成的区域,更新 maxarea,并将指向较短线段的指针向较长线段那端移动一步。

from typing import List
######  leetcode 代码主体 ######
class Solution:
    def maxArea(self, height: List[int]) -> int:
        i, j, res = 0, len(height) - 1, 0
        while i < j:
            if height[i] < height[j]:
                res = max(res, height[i] * (j - i))
                i += 1
            else:
                res = max(res, height[j] * (j - i))
                j -= 1
        return res

                    
        
##### 模拟笔试 要写 输入、输出 ####   
## 根据题目 有两个输入,一个列表,一个整数
#输入列表:
nums = input()   #键盘输入,输入为字符
nums=nums.split(",")    #根据分割分隔符划分字符,这里用逗号 
nums = [int(nums[i]) for i in range(len(nums))]   #将字符转成int

# 输出
output = Solution()  
print(output.maxArea(nums))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
发布了47 篇原创文章 · 获赞 55 · 访问量 1万+


所属网站分类: 技术文章 > 博客

作者:外星人入侵

链接:https://www.pythonheidong.com/blog/article/232489/1a70a38d9716fd4b0cb3/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)