训练题:盛最多水的容器

题目:http://t.cn/RejYsll

  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

从两端往中间靠拢,每次移动高度更小的那个。

  1. int maxArea(vector<int>& height) {
  2. if( height.size() < 2 ) { return 0; }
  3. int maxProduct = -1;
  4. const int size = height.size();
  5. for( int left = 0,right = size-1; right > left; )
  6. {
  7. maxProduct = std::max( ( right - left ) * std::min( height[left], height[right] ), maxProduct );
  8. if( height[left] < height[right] ) {
  9. ++left;
  10. }
  11. else {
  12. --right;
  13. }
  14. }
  15. return maxProduct;
  16. }

训练题:找出倒数第k节点

语雀内容

训练题:和为S的数

语雀内容

训练题:和为s的连续整数序列

语雀内容

训练题:奇数在偶数前面

语雀内容