aboutsummaryrefslogtreecommitdiff
path: root/container_most_water.c
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-10-03 21:55:54 -0600
committerJack Sangdahl <[email protected]>2025-10-03 21:55:54 -0600
commitbadbb55eba0ccf863d56ded03317f945f250850a (patch)
tree903d67e7a4eb9c9c3fd1a346af89f47b9a28dbdf /container_most_water.c
parent2480c593f614b6a93882311ddfb9bdc885f40c98 (diff)
downloadleetcode-badbb55eba0ccf863d56ded03317f945f250850a.tar.gz
leetcode-badbb55eba0ccf863d56ded03317f945f250850a.zip
11. container with most water
Diffstat (limited to 'container_most_water.c')
-rw-r--r--container_most_water.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/container_most_water.c b/container_most_water.c
new file mode 100644
index 0000000..9193654
--- /dev/null
+++ b/container_most_water.c
@@ -0,0 +1,29 @@
+// 11. Container With Most Water
+#include "leetcode.h"
+
+/*
+ * you are given an integer array 'height' of length 'n'. there are 'n' vertical
+ * lines drawn such that two endpoints of the i'th line are '(i, 0)' and '(i,
+ * height[i])'. find two lines that together with the x-axis form a container
+ * such that the container contains the most water. return the maximum amount of
+ * water a container can store. notice that you may not slant the container.
+ */
+
+int maxArea(int *height, int heightSize) {
+ int left = 0, right = heightSize - 1, ans = 0;
+ while (left < right) {
+ int curr = fmin(height[left], height[right]) * (right - left);
+ ans = fmax(ans, curr);
+ if (height[left] < height[right])
+ left++;
+ else
+ right--;
+ }
+ return ans;
+}
+
+int main() {
+ int h1[] = {1, 8, 6, 2, 5, 4, 8, 3, 7}, h2[] = {1, 1};
+ printf("%d\n", maxArea(h1, ARRAY_SIZE(h1))); // expect: 49
+ printf("%d\n", maxArea(h2, ARRAY_SIZE(h2))); // expect: 1
+}