BM93. 盛水最多的容器
描述
示例1
输入:
[1,7,3,2,4,5,8,2,7]
输出:
49
示例2
输入:
[2,2]
输出:
2
示例3
输入:
[5,4,3,2,1,5]
输出:
25
C++ 解法, 执行用时: 11ms, 内存消耗: 2980KB, 提交时间: 2022-07-24
static const auto io_sync_off = []() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector * @return int整型 */ int maxArea(vector<int>& height) { // write code here if(height.size() < 2) { return 0; } int res = 0; int left = 0; int right = height.size() - 1; while(left <= right) { int p = height[left]; int n = height[right]; int sum = min(p , n) * (right - left); res = max(res, sum); if(p > n) { --right; } else { ++left; } } return res; } };
C++ 解法, 执行用时: 11ms, 内存消耗: 3080KB, 提交时间: 2022-07-24
static const auto io_sync_off = []() { std::ios::sync_with_stdio(false); std::cin.tie(0); return 0; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector * @return int整型 */ int maxArea(vector<int>& height) { // write code here if(height.size() < 2) { return 0; } int res = 0; int left = 0; int right = height.size() - 1; while(left <= right) { int p = height[left]; int n = height[right]; int sum = min(p , n) * (right - left); res = max(res, sum); if(p > n) { --right; } else { ++left; } } return res; } };
C++ 解法, 执行用时: 11ms, 内存消耗: 3080KB, 提交时间: 2022-06-29
static const auto io_sync_off = []() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector * @return int整型 */ int maxArea(vector<int>& height) { int left = 0; int right = height.size() - 1; int maxArea = 0; int curMinHeight; int width; while (left<right) { width = right - left; if (height[left] < height[right]) { curMinHeight = height[left]; ++left; } else { curMinHeight = height[right]; --right; } maxArea = max(maxArea, curMinHeight*width); } return maxArea; } };
C++ 解法, 执行用时: 11ms, 内存消耗: 3620KB, 提交时间: 2022-07-04
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector * @return int整型 */ int maxArea(vector<int>& height) { int n = height.size(); if(n < 2) return 0; int left = 0; int right = n - 1; int area = 0; int ans; while(left < right){ area = std::min(height[left], height[right]) * (right - left); ans = std::max(ans, area); if(height[left] <= height[right]){ ++left; }else{ --right; } } return ans; } }; static const auto io_sync_off=[]() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }();
C++ 解法, 执行用时: 12ms, 内存消耗: 2964KB, 提交时间: 2022-06-24
static const auto io_sync_off = []() { std::ios::sync_with_stdio(false);//关闭输入输出 std::cin.tie(nullptr);//取消两个stream绑定 std::cout.tie(nullptr);//取消cin 和 cout之间的绑定,加快执行效率 return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector * @return int整型 */ int maxArea(vector<int>& height) { if (height.size() < 2) return 0; int left = 0, right = height.size() - 1; int tem = 0; int ans = 0; while (left<right) { tem = min(height[left], height[right]) * (right - left); ans = max(ans, tem); if (height[left] <= height[right]) left++; else right--; } return ans; } };