nums নামক একটি তালিকা দেওয়া আছে যেখানে প্রতিটি মান একটি টাস্ক সমাপ্তির সময় নির্দেশ করে। আমরা যেকোনো অ-সন্নিহিত টাস্ক বাদ দিতে পারি। সব টাস্ক সমাপ্তির ন্যূনতম মোট সময় বের করতে হবে।
উদাহরণ: nums = [11, 6, 8, 16] হলে আউটপুট ১৪, কারণ প্রথম ও শেষ টাস্ক বাদ দিয়ে 6+8=১৪ হয়।
সমাধানের ধাপসমূহ
- n := len(nums)
- table := n×2 মেট্রিক্স 0 দিয়ে পূরণ
- table[0][0] = 0, table[0][1] = nums[0]
- i = 1 থেকে n-1 পর্যন্ত:
- table[i][0] = table[i-1][1]
- table[i][1] = min(table[i-1][0], table[i-1][1]) + nums[i]
- table[n-1] সারির ন্যূনতম মান ফেরত দিন
উদাহরণ কোড
class Solution:
def solve(self, nums):
n = len(nums)
table = [[0] * 2 for _ in range(n)]
table[0][0] = 0
table[0][1] = nums[0]
for i in range(1, n):
table[i][0] = table[i - 1][1]
table[i][1] = min(table[i - 1][0], table[i - 1][1]) + nums[i]
return min(table[n - 1])
ob = Solution()
nums = [11, 6, 8, 16]
print(ob.solve(nums))
ইনপুট
[11, 6, 8, 16]
আউটপুট
14