題目連結:
題目意譯:
你被給定一整數陣列 prices,其中 prices[i] 為店鋪中第 i 的物品的價格。
現在店內有一個特別的促銷。如果你買了第 i 個物品,則你將會得到一個等於 prices[j] 的折扣值,其中 j 為最小的索引值滿足 j > i 且 prices[j] ≦ prices[i]。反之,你將不會得到任何折扣。
回傳一整數陣列 answer,其中 answer[i] 為在考慮進特別促銷之後你買下店內第 i 個物品最終所需付的金額。
限制:
1 ≦ prices.length ≦ 500
1 ≦ prices[i] ≦ 1000
範例測資:
範例 1:
輸入: prices = [8,4,6,2,3]
輸出: [4,2,4,2,3]
解釋:
對於物品 0,其中 prices[0] = 8,你將得到一個等於 prices[1] = 4 的折扣值。因此,你最終所需要付的金額為 8 - 4 = 4。
對於物品 1,其中 prices[1] = 4,你將得到一個等於 prices[3] = 2 的折扣值。因此,你最終所需要付的金額為 4 - 2 = 2。
對於物品 2,其中 prices[2] = 6,你將得到一個等於 prices[3] = 2 的折扣值。因此,你最終所需要付的金額為 6 - 2 = 4。
對於物品 3 和 4,你將不會得到任何折扣。
範例 2:
輸入: prices = [1,2,3,4,5]
輸出: [1,2,3,4,5]
解釋: 在此例中,對於所有物品,你都將不會得到任何折扣。
範例 3:
輸入: prices = [10,1,1,6]
輸出: [9,0,1,6]
解題思維:
雖然可以直接對每個 prices[i] 窮舉看看存不存在 prices[j](i < j)使得 prices[i] > prices[j](因為 prices 的長度最長也只有 500 個元素)。
但是我們實際上可以模仿
這題的作法(該題是為每個元素找下一個「較大」,而本題是找下一個「較小」,所以大小條件對調就可以套用到本題)即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。