আমি এটি শুরু করে বলতে চাই যে এটি কোনও হোম ওয়ার্কের প্রশ্ন নয়। আমি অ্যালগরিদমগুলির পরিচিতি পড়ছি - একটি ভাল প্রোগ্রামার হওয়ার জন্য বিখ্যাত সিএলআরএস পাঠ্য। আমি নিজেই বইটিতে প্রদত্ত সমস্যা এবং অনুশীলনগুলি সমাধান করার চেষ্টা করছি।
আমি সিএলআরএস দ্বিতীয় সংস্করণ থেকে অধ্যায় 10 প্রাথমিক ডেটা স্ট্রাকচার থেকে অধ্যায় 10.1-2 সমাধানের চেষ্টা করছি । এখানে এর রাজ্যগুলি কি:
একটি অ্যারে এ [1..n] তে দুটি স্ট্যাক কীভাবে প্রয়োগ করা যায় তা ব্যাখ্যা করুন যাতে উভয় স্ট্যাকের উপাদানগুলির একসাথে এন না হলে স্ট্যাক ওভারফ্লো হয় না । পুশ এবং পিওপি অপারেশনগুলি ও (1) সময়ে চালানো উচিত ।
আমি এখন পর্যন্ত যে সমাধানটি নিয়ে এসেছি তা হ'ল:
অ্যারে এ [1..n] দুটি স্ট্যাক প্রয়োগ করুন: এস 1 [1..i] এবং এস 2 [i..n] ।
জন্য পুশ-S1 এবং পুশ-S2 অপারেশন, যদি স্ট্যাকের 'পূর্ণ' তাহলে মধ্যে উপাদানের ঠেলাঠেলি শুরু অন্যান্য স্ট্যাক (যেমন। যদি স্ট্যাকের S1 পূর্ণ একটি নতুন উপাদান মধ্যে push করা চেষ্টা করছে তারপর মধ্যে যে উপাদান ধাক্কা হয় স্ট্যাক এস 2 এবং তদ্বিপরীত)।
এই পদ্ধতির সমস্যাটি হ'ল আমি পিওপি-এস 1 বা পিওপি-এস 2 নির্ভরযোগ্যভাবে সক্ষম করতে পারব না কারণ কোন উপাদানটি কোন স্ট্যাকের অন্তর্ভুক্ত তা 'মনে রাখার' উপায় নেই। যদি স্ট্যাকের উপাদানগুলি (কী, মান) জোড়া হয়, মূলটি স্ট্যাক নম্বর হয় তবে একটি উপাদান পপ করতে হলে আমাকে সবচেয়ে খারাপ অবস্থায় i বা (ni) বার অনুসন্ধান করতে হবে - যা O (n ) হবে ) (আমি এখানে ভুল হলে আমাকে সংশোধন করতে নির্দ্বিধায়), যা O (1) হবে না ।
আমি বেশ কিছুদিন ধরেই প্রশ্নটিতে মাথা ঠাটিয়ে যাচ্ছি। আমি কি সঠিক পথে রয়েছি? এই সমস্যা সমাধানের জন্য কেউ কি আমার সম্ভাব্য পয়েন্টার দিতে পারেন?
সাধারণভাবে, এই সমস্যাগুলি সম্পর্কে আমার কীভাবে 'চিন্তা' করা উচিত? বা কেবল সত্যিকারের বুদ্ধিমান লোকেরা কি এই ধরণের সমস্যাগুলি সমাধান করতে পারেন? এইগুলির (যেমন অভিজ্ঞতা অর্জন) এর মতো সমস্যাগুলি মোকাবেলা / সমাধান করা কি আমাকে আরও উন্নত করতে সহায়তা করবে?
আমি আলোকিত হওয়ার অপেক্ষায় রয়েছি।