日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode--11. 盛水最多的容器

發布時間:2024/7/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode--11. 盛水最多的容器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定 n 個非負整數 a1,a2,...,an,每個數代表坐標中的一個點?(i,?ai) 。在坐標內畫 n 條垂直線,垂直線 i?的兩個端點分別為?(i,?ai) 和 (i, 0)。找出其中的兩條線,使得它們與?x?軸共同構成的容器可以容納最多的水。

說明:你不能傾斜容器,且?n?的值至少為 2。

圖中垂直線代表輸入數組 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍色部分)的最大值為?49。

示例:

輸入: [1,8,6,2,5,4,8,3,7]
輸出: 49

一 暴力解法

public class Solution11 {
?? ?public static int maxArea(int[] height) {
?? ??? ? int i,j,max=0;
?? ??? ? int n = height.length;
?? ??? ? for(i=0;i<n;i++)
?? ??? ? {
?? ??? ??? ? for(j=i;j<n;j++)
?? ??? ??? ? {
?? ??? ??? ??? ? if((j-i)*java.lang.Math.min(height[i], height[j])>max)
?? ??? ??? ??? ? {
?? ??? ??? ??? ??? ? max = (j-i)*java.lang.Math.min(height[i], height[j]);
?? ??? ??? ??? ? }
?? ??? ??? ? }
?? ??? ? }
?? ??? ? return max;
?? ? ? ? ? ?
?? ? ? ?}
?? ? public static void main(String[] args)
?? ? {
?? ??? ? int[] a = {1,8,6,2,5,4,8,3,7};
?? ??? ? System.out.println(maxArea(a));
?? ? }

}

二 雙標記法?

首尾各設置一個標記,每一次的面積都決定于寬度和短柱子的高度,

所以只需要變化短柱子即可。

i,j分別放置于首尾處,如果第一根柱子短,i向后移動一位,否則,j向前移動一位


public class Solution11 {
?? ?
?? ?public static int maxArea(int[] height) {
?? ??? ? int i,j,max=0;
?? ??? ? int n = height.length;
?? ??? ? i=0;j=n-1;
?? ??? ? while(i<j)
?? ??? ? {
?? ??? ??? ? if((j-i)*java.lang.Math.min(height[i], height[j])>max)
?? ??? ??? ? {
?? ??? ??? ??? ? max = (j-i)*java.lang.Math.min(height[i], height[j]);
?? ??? ??? ? }
?? ??? ??? ? if(height[i]>height[j])
?? ??? ??? ? {
?? ??? ??? ??? ? j--;
?? ??? ??? ? }
?? ??? ??? ? else
?? ??? ??? ? {
?? ??? ??? ??? ? i++;
?? ??? ??? ? }
?? ??? ? }
?? ??? ? return max;
?? ? ? ? ? ?
?? ? ? ?}
?? ? public static void main(String[] args)
?? ? {
?? ??? ? int[] a = {1,8,6,2,5,4,8,3,7};
?? ??? ? System.out.println(maxArea(a));
?? ? }
}
?

總結

以上是生活随笔為你收集整理的Leetcode--11. 盛水最多的容器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。