সম্পাদক সমস্যা এইভাবে হিসাবে বর্ণনা একটি বিখ্যাত সমস্যা হল:
- আপনার নতুন সেক্রেটারি দরকার
- আপনার কাছে এন আবেদনকারী রয়েছে যে আপনি একবারে একটি করে সাক্ষাত্কার নিতে পারেন
- আপনি সাক্ষাত্কারের পরে প্রতিটি আবেদনকারীকে স্কোর করতে সক্ষম। আপনার স্কোরিং সিস্টেম কখনই দু'জন আবেদনকারীকে একই স্কোর দেয় না
- আপনি কোনও আবেদনকারীর সাক্ষাত্কার নেওয়ার পরে আপনাকে অবশ্যই অবিলম্বে "হ্যাঁ" বা "না" দিতে হবে
- আপনি সর্বোচ্চ স্কোর সহ আবেদনকারীকে চান
সমাধানটি হ'ল প্রথম floor(N/e)
আবেদনকারীদের সাক্ষাত্কার দেওয়া এবং তারপরে প্রথম আবেদনকারীকে গ্রহণ করা যা পূর্ববর্তী সকল আবেদনকারীর তুলনায় উচ্চতর স্কোর। যদি আবেদনকারীর মধ্যে কেউ উচ্চতর না হন তবে সর্বশেষ আবেদনকারীকে ফিরিয়ে দিন। আকর্ষণীয় যথেষ্ট, এটি সময়ের সর্বোচ্চ আবেদনকারীকে 1/e
শতাংশ দেয় । ইউলারের সংখ্যাe
বোঝায় । এর মান পেতে , আপনি একটি বিল্টিন ব্যবহার করতে পারেন , বা হার্ডকোডটি কমপক্ষে 5 দশমিক পয়েন্টে রাখতে পারেন।e
log
ইনপুট:
অনন্য অ-নেতিবাচক পূর্ণসংখ্যার একটি খালি খালি অ্যারে আর বেশি নয় 2^31-1
।
আউটপুট:
নির্বাচিত প্রার্থীর প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। অ্যালগরিদম পরিষ্কার করার জন্য হ'ল:
floor(N/e)
অ্যারের প্রথম উপাদানগুলিতে সর্বাধিক উপাদানটি সন্ধান করুন ।- বাকী উপাদানগুলির মধ্য দিয়ে আইট্রেট করুন এবং প্রথম উপাদানটি ফিরে যান যা পদক্ষেপ 1 এ পাওয়া সর্বাধিকের চেয়ে বেশি।
- যদি উপাদানগুলির মধ্যে কোনওটি শেষ না হয় তার চেয়ে বেশি হয়।
উদাহরণস্বরূপ, বলুন আপনার অ্যারেটি ছিল [2,7,4,3,9,20]
, তাই N = 6
এবং floor(N/e) = 2
। অ্যারের প্রথম 2 উপাদান [2,7]
। সর্বোচ্চ [2,7]
হয় 7
। বাকি উপাদানগুলি হ'ল [4,3,9,20]
। প্রথম উপাদান যে তার চেয়ে অনেক বেশী 7
হয় 9
, তাই আমরা ফিরে আসতে 9
।
পরীক্ষার কেস:
[0] => 0
[100] => 100
[100, 45] => 100
[0, 1] => 0
[45, 100] => 45
[1, 4, 5] => 4
[1, 5, 4] => 5
[5, 4, 1] => 1
[5, 1, 4] => 4
[4, 1, 5] => 5
[56, 7, 37, 73, 90, 59, 65, 61, 29, 16, 47, 77, 60, 8, 1, 76, 36, 68, 34, 17, 23, 26, 12, 82, 52, 88, 45, 89, 94, 81, 3, 24, 43, 55, 38, 33, 15, 92, 79, 87, 14, 75, 41, 98, 31, 58, 53, 72, 39, 30, 2, 0, 49, 99, 28, 50, 80, 91, 83, 27, 64, 71, 93, 95, 11, 21, 6, 66, 51, 85, 48, 62, 22, 74, 69, 63, 86, 57, 97, 32, 84, 4, 18, 46, 20, 42, 25, 35, 9, 10, 19, 40, 54, 67, 70, 5, 44, 13, 78, 96]
=> 98
[10, 68, 52, 48, 81, 39, 85, 54, 3, 21, 31, 59, 28, 64, 42, 90, 79, 12, 63, 41, 58, 57, 13, 43, 74, 76, 94, 51, 99, 67, 49, 14, 6, 96, 18, 17, 32, 73, 56, 7, 16, 60, 61, 26, 86, 72, 20, 62, 4, 83, 15, 55, 70, 29, 23, 35, 77, 98, 92, 22, 38, 5, 50, 82, 1, 84, 93, 97, 65, 37, 45, 71, 25, 11, 19, 75, 78, 44, 46, 2, 53, 36, 0, 47, 88, 24, 80, 66, 87, 40, 69, 27, 9, 8, 91, 89, 34, 33, 95, 30]
=> 30
আপনার সমাধানটি অবশ্যই হবে O(n)
, n
অ্যারের দৈর্ঘ্য কোথায় । যদি আপনার ভাষার কোনও বিল্টিন থাকে যা সর্বাধিক অ্যারের সন্ধান করে তবে আপনি ধরে নিতে পারেন যে ফাংশনটি গ্রহণ করে O(n)
(এবং আশা করি এটি তা করবে)।
স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয় এবং এটি একটি কোড-গল্ফ , তাই আপনার পছন্দের ভাষায় সংক্ষিপ্ত উত্তরটি তৈরি করুন!
e
(উদাহরণস্বরূপ পাইথন, যেখানে e=2.71828
সংক্ষিপ্ততর হয় import math;math.E
)
e
ব্যবহার করা উচিত?