স্টক প্রাইস অ্যারে দেওয়া থাকে। সর্বোচ্চ একটি ট্রানজ্যাকশন (একবার কেনা, একবার বেচা) করা যাবে। সর্বোচ্চ প্রফিট বের করতে হবে। লেফট মিন এবং রাইট ম্যাক্স অ্যারে ব্যবহার করা হয়েছে।
সমাধানের পদ্ধতি
leftMinএবংrightMaxঅ্যারে তৈরি করুন।leftMin[0] = prices[0], বাম থেকে ডানে মিনিমাম বানান।rightMax[-1] = prices[-1], ডান থেকে বামে ম্যাক্সিমাম বানান।- প্রতিটি
iজন্যmax(rightMax[i+1] - leftMin[i])বের করুন।
উদাহরণ কোড
class Solution(object):
def maxProfit(self, prices):
if not prices:
return 0
leftMin = [0 for i in range(len(prices))]
rightMax = [0 for i in range(len(prices))]
leftMin[0] = prices[0]
for i in range(1, len(prices)):
leftMin[i] = min(leftMin[i-1], prices[i])
rightMax[-1] = prices[-1]
for i in range(len(prices)-2, -1, -1):
rightMax[i] = max(rightMax[i+1], prices[i])
ans = 0
for i in range(len(prices)-1):
ans = max(ans, rightMax[i+1] - leftMin[i])
return ans
ob1 = Solution()
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
ইনপুট
prices = [7,2,5,8,6,3,1,4,5,4,7]
আউটপুট
6