力扣(leetcode)連線 盛最多水的容器
題目:
給你 n 個非負整數 a1,a2,…,an,每個數代表座標中的乙個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器,且 n 的值至少為 2。
解體思路:
雙指標從兩邊向中間運算,比較左右兩個容器壁大小,讓一方小的主動向另外一方靠近(因容器盛水量大小受小的一方影響,如果挪動大的,加上兩壁距離-1,這樣只會讓盛水量更小),直到兩者相等(迴圈條件);
示例:
輸入:[1,
8,6,
2,5,
4,8,
3,7]
輸出:49
實現方式一:(暴力解題法,缺點時間複雜度n^2,效率較低)
public
static
intmaxarea
(int
height)
}return maxarea;
}
實現方式二:(雙指標法減少時間複雜度,存在的其他問題:既有迴圈又有判斷,用while更高效一些,減少了像i這種非必要的變數,並且無需再判斷退出條件;並且迴圈次數不夠準確,效率不高)
public
static
intmaxarea1
(int
height)
else}}
return maxarea;
}
實現方式三:(替換成while結果,減少了不必要的迴圈次數;)
public
static
intmaxarea2
(int
height)
else
}return maxarea;
}
11 盛最多水的容器(雙指標法)
container with most water 題目描述 給你 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜...
盛最多水的容器(雙指標)
今天在leetcode上刷了一道題用到了雙指標,現在把這種精妙的解法記錄下來 題目傳送門 題目的大意就是要找到乙個最大的min s i s j j i 那麼這時候我是一點思路都沒,然後題解指出了乙個雙指標的做法,我們先討論這個東西的合理性,初始情況,將i,j放到陣列的開始和結尾,此時,我們能拿到乙個...
經典面試題 盛最多水的容器(雙指標法)
例題 給你 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。示例 輸入 1,8,6,2...