演算法設計思想之「貪心演算法」

2022-09-20 17:45:10 字數 968 閱讀 4571

輸入: coins = [1, 2, 5], amount = 11

輸出: 3

解釋: 11 = 5 + 5 + 1

輸入: coins = [1, 3, 4], amount = 6

輸出: 3

解釋: 6 = 4 + 1 + 1

1.1 題目描述

1.2 解題思路

輸入: g = [1,2,3], s = [1,1]

輸出: 1

解釋:你有三個孩子和兩塊小餅乾,3個孩子的胃口值分別是:1,2,3

雖然你有兩塊小餅乾,由於他們的尺寸都是1,你只能讓胃口值是1的孩子滿足

所以你應該輸出1

1.3 解題步驟
function findcontentchildren(g, s) 

g.sort(sortfunc);

s.sort(sortfunc);

let i = 0;

s.foreach(n =>

})return i

}

1.4 時間複雜度&空間複雜度2.1 題目描述

2.2 解題思路

輸入: prices = [7,1,5,3,6,4]

輸出: 7

解釋:在第 2 天(**** = 1)的時候**,在第 3 天(**** = 5)的時候賣出, 這筆交易所能獲得利潤 = 5-1 = 4

隨後,在第 4 天(**** = 3)的時候**,在第 5 天(**** = 6)的時候賣出, 這筆交易所能獲得利潤 = 6-3 = 3

2.3 解題步驟
function maxprofit(prices) 

} return profit

}

2.4 時間複雜度&空間複雜度

貪心演算法的設計思想

貪心演算法在解決問題的策略上目光短淺,只根據當前已有的資訊就做出選擇,而且一旦做出了選擇,不管將來有什麼結果,這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域性最優。貪心演算法對於大部分的優化問題都能產生最優解,但不能總獲得整體最優解,通常可以獲得近似最優...

貪心演算法思想

貪心演算法思想 顧名思義,貪心演算法總是作出在當前看來最好的選擇。也就是說貪心演算法並不從整體最優考慮,它所作出的選擇只是在某種意義上的區域性最優選擇。當然,希望貪心演算法得到的最終結果也是整體最優的。雖然貪心演算法不能對所有問題都得到整體最優解,但對許多問題它能產生整體最優解。如單源最短路經問題,...

貪心演算法之prim演算法

演算法思想 首先置s 然後只要s是v的真子集,就做如下的貪心選擇 選擇滿足條件i屬於s,j屬於v s,且edge i j 是最小的邊,就將其頂點j新增到s中,這個過程一直進行到s v時為止,在這個過程中,選取到的所有邊恰好構成g的一顆最小生成樹。include define infinity 500...