-
Notifications
You must be signed in to change notification settings - Fork 21
/
ContainerWithMostWater.swift
43 lines (38 loc) 路 1.24 KB
/
ContainerWithMostWater.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//
// ContainerWithMostWater.swift
// LeetCode
//
// Created by 榛庤档澶儙 on 25/11/2017.
// Copyright 漏 2017 lizhaotailang. All rights reserved.
//
// Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).
// n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0).
// Find two lines, which together with x-axis forms a container, such that the container contains the most water.
//
// Note: You may not slant the container and n is at least 2.
//
// Accepted. See [ContainerWithMostWaterTests](./LeetCodeTests/ContainerWithMostWater.swift) for the test cases.
//
import Foundation
class ContainerWithMostWater {
func maxArea(_ height: [Int]) -> Int {
if height.count < 2 {
return 0
}
var low = 0
var high = height.count - 1
var maxCapacity = 0
while low < high {
let cap = (high - low) * min(height[low], height[high])
if cap > maxCapacity {
maxCapacity = cap
}
if height[low] < height[high] {
low += 1
} else {
high -= 1
}
}
return maxCapacity
}
}