ধরুন আমাদের কাছে nums নামক সংখ্যার একটি তালিকা আছে এবং আরেকটি মান k আছে, আমাদের k আকারের পরবর্তী সংখ্যাগুলি খুঁজে বের করতে হবে যা কঠোরভাবে বৃদ্ধি পাচ্ছে। উত্তরটি খুব বড় হলে, এটিকে 10^9 + 7 দ্বারা মোড করুন।
সুতরাং, ইনপুট যদি nums =[2, 3, 4, 1] k =2 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমাদের কাছে সাইজ 2:[2, 3], [3, 4], [২, ৪]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- m :=10^9 + 7
- dp :=সংখ্যার মতো আকারের একটি তালিকা এবং 1 দিয়ে পূরণ করুন
- নিম্নলিখিত k বার পুনরাবৃত্তি করুন, করুন
- j-এর জন্য dp - 1 থেকে 0 এর পরিসরে, 1 কমিয়ে দিন, করুন
- dp[j] :=0
- আমি 0 থেকে j রেঞ্জের জন্য, কর
- যদি nums[i]
- dp[j] :=dp[j] + dp[i]
- যদি nums[i]
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution: def solve(self, nums, k): m = 10 ** 9 + 7 dp = [1] * len(nums) for _ in range(k - 1): for j in range(len(dp) - 1, -1, -1): dp[j] = 0 for i in range(j): if nums[i] < nums[j]: dp[j] += dp[i] return sum(dp) % m ob = Solution() nums = [2, 3, 4, 1] k = 2 print(ob.solve(nums, k))
ইনপুট
[2, 3, 4, 1], 2
আউটপুট
3