題目:
給定 n 個非負整數 a1,a2,...,an,每個數代表座標中的乙個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。(python)
說明:你不能傾斜容器,且 n 的值至少為 2。
圖中垂直線代表輸入陣列 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍色部分)的最大值為 49。
示例:
輸入:[1,8,6,2,5,4,8,3,7]輸出:49答案:
class solution(object):
def maxarea(self, height):
""":type height: list[int]
:rtype: int
"""n = len(height)
i = 0
j = n - 1
s = 0
while i <> j:
s = max(s,(j-i)*min(height[i],height[j]))
if height[i] < height[j]:
i = i + 1
else:
j = j-1
return s
雙指標,分別從陣列的兩端向中間移動,每次移動的指標為元素較小的乙個,直到兩指標相遇。
第十一題 x的平方根
實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。二分法,時間複...
11 劍指offer第十一題(python)
問題 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 class solution def numberof1 self,n write code here count 0 if n 0 n n 0xffffffff while n count 1 n n...
演算法第十一題(攻克歸併排序)
陣列中的逆序對 class solution def reversepairs self,nums list int int self.cnt 0def merge nums,start,mid,end,temp i,j start,mid 1while i mid and j end if num...