C++之数字容器装水问题(10)---《那些奇怪的算法》
2017-10-14 22:20
351 查看
参考:《one-day-one-leetcode》
问题描述:
注意理解程序中容器装水取决于容器的小的那边,并不是容器的大的那边。
优化实现代码:
运行结果:
问题描述:
注意理解程序中容器装水取决于容器的小的那边,并不是容器的大的那边。
优化实现代码:
#include <iostream> #include <string> #include <vector> using namespace std; int maxArea(vector<int> height){ int i = 0; int j = height.size() - 1; int max = 0; while (j > i){ int con = 0; int min = height[i] > height[j] ? height[j] : height[i]; if (j == i + 1) con = min; else con = min*(j - i); if (con > max){ max = con; } //移动左右指针,注意最小的我们已经计算过了 if (height[i] > height[j]){ j--; } else{ i++; } } return max; } int main(){ vector<int> v; int arr[] = { 3, 4, 5, 6, 9, 10 }; for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){ v.push_back(arr[i]); } int ma = maxArea(v); cout << ma << endl; return 0; }
运行结果:
相关文章推荐
- C++之罗马数字转换为整型数字(12)---《那些奇怪的算法》
- C++之整数转化为罗马数字(11)---《那些奇怪的算法》
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- C++之实现两个链表合并(迭代和递归版本)(19)---《那些奇怪的算法》
- C++之树的层序遍历和深度优先遍历(先序遍历)(14)---《那些奇怪的算法》
- C++之平衡二叉树的判定(25)---《那些奇怪的算法》
- 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了,logn的算法复杂度
- C++实现两个有序链表合并(17)---《那些奇怪的算法》
- C++之求解二叉树中所有从根节点到叶节点的所有路径(23)---《那些奇怪的算法》
- C++之字符串的zipzag排列(9)---《那些奇怪的算法》
- C++之最长公共子串(最长子数组和)(22)---《那些奇怪的算法》
- C++之最长回文字符串的判断(8)---《那些奇怪的算法》
- C++之求取vector中三个元素和和给定元素最接近的值(15)---《那些奇怪的算法》
- C++之最长公共子序列(21)---《那些奇怪的算法》
- C++之实现大顶堆(1)---《那些奇怪的算法》
- C++之快速排序(3)---《那些奇怪的算法》
- C++实现二叉树的镜像操作(18)---《那些奇怪的算法》
- C++之堆的实现(5)---《那些奇怪的算法》
- C++之归并排序(7)---《那些奇怪的算法》