盛最多的水(C)

  • 1. 题目描述
  • 2. 题目分析
  • 3. C语言实现
    • 3.1 暴力穷举法
    • 3.2 双指针法

1. 题目描述

难度:中等

2. 题目分析

该题目数字化之后可以这么理解:
给定数据[(a1,1), (a2,2), (a3,3)…(an, n)], 求解 min(ax, ay)*abs(x-y)的最大值。该题目有两种解法:

  • 暴力穷举法
    该方法是最容易想到的,依次穷举所有情况,然后输出最大值即可,这种算法时间复杂度为O(n^2)
  • 双指针法
    双指针法在处理数组问题的时候真的是神器,定义两个指针,一个放在数组首位,一个放在数组末尾,然后计算对应的面积,将两者之间高度小的一方移动,并更新面积的值,直到两个指针相遇输出最终的结果。至于这个方法为什么一定能够遇到最大值,我还没有想明白,只是可以从反证的角度来解释。这种算法时间复杂度为O(n)

3. C语言实现

3.1 暴力穷举法

代码如下:

int maxArea(int* height, int heightSize){int i, j, h, l;long res = 0;for(i = 0; i < heightSize-1; i++){for(j = i+1; j < heightSize; j++){h = height[i]>height[j]? height[j]:height[i];l = j-i;res = res>h*l? res:h*l;}}return res;
}

运行结果为:

3.2 双指针法

代码如下:

int maxArea(int* height, int heightSize){//i, j为两个指针,h为高,l为长,用来计算面积int i=0, j=heightSize-1, h, l;long res = 0;for(;i<j;){h = height[i]>height[j]?height[j]:height[i];l = j-i;res = res>l*h?res:l*h;if(h==height[i])i++;elsej--;}return res;
}

运行结果为:

LeetCode--11.盛最多的水(双指针,暴力)相关推荐

  1. [贪心|双指针] leetcode 11 盛最多水的容器

    [贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...

  2. LeetCode 11. 盛最多水的容器

    11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...

  3. LeetCode 11. 盛最多水的容器(双指针)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) . 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...

  4. 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)

    给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...

  5. leetcode —— 11. 盛最多水的容器

    给定 n 个非负整数 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,每个数代表坐标中的一个点 (i,ai)(i, a_i)(i,ai​) .在坐标内画 n 条垂 ...

  6. LeetCode #11 盛最多水的容器

    给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...

  7. LeetCode——11. 盛最多水的容器

    题目链接:https://leetcode-cn.com/problems/container-with-most-water/ #include <bits/stdc++.h> #inc ...

  8. 力扣(leetcode) 11. 盛最多水的容器 (短板木桶原理详解)

    题目在这:https://leetcode-cn.com/problems/container-with-most-water/ 思路分析: 本题容易想到使用双指针维护水桶的左边和右边. 开始时,L指 ...

  9. LeetCode 11 盛最多水的容器

    https://leetcode-cn.com/problems/container-with-most-water/ 解决方案 class Solution {public int maxArea( ...

最新文章

  1. 逻辑覆盖测试(一)语句覆盖
  2. leetcode 91. Decode Ways | 91. 解码方法(动态规划)
  3. C语言中队列、堆栈、内存映射、多线程概念
  4. type或者xtype总结
  5. linux回收内存的方法,linux释放内存的方法
  6. 万字长文讲解编码知识,看这文就够了!| 原力计划
  7. oracle物理,Oracle物理结构概述
  8. python导入excel表格给列命名_Python中对 Excel 的相关详细操作(读取、写入、指定行、指定列、新增sheet工作表)...
  9. DS博客作业01--日期抽象数据类型设计与实验
  10. 自己DIY一个mp3播放器
  11. Fedora 33 安装wine-6.0 微信3.0
  12. UE4.26水系统和浮力系统
  13. IOS破解软件,比较全的网站。
  14. English常用短语
  15. 《统计建模与R软件》第二章课后作业解题答案
  16. 李大潜:学习数学是战略性投资【导图版】
  17. rocketMQ原理讲解
  18. 树莓派Kali系统 HDMI 修改屏幕分辨率
  19. 外卖项目 - Day05
  20. fNIRS用于评估自然/社会情况下人类行为中的脑功能

热门文章

  1. java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...
  2. mavros 使用记录
  3. ES6-Set集合的创建
  4. 【GPU加速系列】PyCUDA(一):上手简单操作
  5. Redis入门(三)Redis的基本数据类型
  6. OpenCV windows 上安装
  7. vue项目的骨架及常用组件介绍
  8. msp430入门编程21
  9. 站在Java的角度看LinkedList
  10. 布同:web版比赛实时算分系统的设计