刷题笔记之力扣——盛最多水的容器

为了纪念自己做过的题目,所以在CSDN上开一个博客来记录。
力扣上这道题目的难度是中等,和CSP考试中的第一题难度差不多(CSP中有一年的第一题就是和他差不多的)
此题有两种做法。
1.暴力法
直接写两个循环,通过比较每一个矩形的面积,从而找到最大的那个矩形的面积。

#include
using namespace std;
#include
#include
int maxArea(int* height, int heightSize)
{
 int maxarea; 
 for(int i=0;i<heightSize;i++)
 {
  for(int j=0;j<heightSize;j++)
  {
   maxarea=max(maxarea,min(height[i],height[j])*(j-i)); 
  }  
 } 
 return maxarea;
}
int main()
{
 int height[9]={1,8,6,2,5,4,8,3,7};
 int maxx=maxArea(height,9);
 cout<<maxx;
 } 
 

2.双指针法
我把这个方法叫做快速排序法,因为这个方法其实和快速排序法的思想是一样的,但是要比快排简单(哈哈哈,不用进行过多的排序)只要判断出height[low]和height[high]哪一个更小即可,所以会更加简单操作。

int maxArea(int* height,int heightSize)   //快速排序法 
{
 int low=0,high=heightSize-1;
 int maxarea=0;
 while(low<high)
 {
  if(height[low]<height[high])
  {
   maxarea=max(maxarea,height[low]*(high-low));
   low++;
  }
  else
  {
   maxarea=max(maxarea,height[high]*(high-low));
   high--;
  } 
 }
 return maxarea;
 }
 


你可能感兴趣的:(刷题笔记之力扣——盛最多水的容器)