[LeetCode] Container With Most Water

題目鏈接:https://leetcode.com/problems/container-with-most-water/

一開始我採用了遍歷對比了每個可能的面積,後來參考了題目裏給出的解決思路:

面積由距離和高度決定,而兩個指定點之間的面積大小由矮的那個點決定,所以,先算出距離最長的兩個點之間的面積。假設高的點b在最右端,這時如果把點b往左移動,面積是隻可能變小,因爲距離變小,而面積由矮的點a乘距離算出,所以,這時應該把點a右移,然後算出面積進行對比,以此類推,時間複雜度爲o(n)

func maxArea(height []int) int {
    ret := 0
	l := 0
	r := len(height) - 1
	for {
		if l == r {
			break
		}
		h := height[r]
		d := r - l
		if height[l] < height[r] {
			h = height[l]
			l++
		} else {
			r--
		}
		container := h * d
		if container > ret {
			ret = container
		}
	}
	return ret
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章