نظرًا لمصفوفة أعداد صحيحة، يتم إرجاع صحيح إذا كان هناك ثلاثية من المؤشرات (i، j، k) بحيث i
هل يمكنك تنفيذ حل يعمل في التعقيد الزمني O(n) والتعقيد المكاني O(1)؟
لحل هذه المشكلة بكفاءة، نحتاج إلى تتبع أصغر وثاني أصغر القيم التي تمت مواجهتها حتى الآن. وإذا وجدنا قيمة ثالثة أكبر من ثاني أصغر قيمة، فقد وجدنا ثلاثية متزايدة.
يتضمن حل القوة الغاشمة التحقق من جميع التوائم الثلاثية المحتملة لمعرفة ما إذا كان هناك واحد يلبي الشرط i
function increasingTripletBruteForce(nums: number[]): boolean { const n = nums.length; for (let i = 0; iتحليل تعقيد الوقت:
حل القوة الغاشمة ليس فعالا وغير مناسب لأحجام المدخلات الكبيرة.
يتضمن الحل الأمثل التكرار عبر المصفوفة مع الحفاظ على متغيرين، الأول والثاني، اللذين يمثلان أصغر وثاني أصغر قيم تمت مواجهتها حتى الآن. إذا وجدنا قيمة أكبر من الثانية، فإننا نرجع صحيحا.
function increasingTriplet(nums: number[]): boolean { let first = Infinity; let second = Infinity; for (let num of nums) { if (numتحليل تعقيد الوقت:
console.log(increasingTripletBruteForce([1,2,3,4,5])); // true console.log(increasingTripletBruteForce([5,4,3,2,1])); // false console.log(increasingTripletBruteForce([2,1,5,0,4,6])); // true console.log(increasingTripletBruteForce([1,1,1,1,1])); // false console.log(increasingTripletBruteForce([1,2])); // false console.log(increasingTripletBruteForce([1,2,3])); // true console.log(increasingTripletBruteForce([1,5,0,4,1,3])); // true console.log(increasingTriplet([1,2,3,4,5])); // true console.log(increasingTriplet([5,4,3,2,1])); // false console.log(increasingTriplet([2,1,5,0,4,6])); // true console.log(increasingTriplet([1,1,1,1,1])); // false console.log(increasingTriplet([1,2])); // false console.log(increasingTriplet([1,2,3])); // true console.log(increasingTriplet([1,5,0,4,1,3])); // true
مشاكل المصفوفات الفرعية:
تقنية المؤشرين:
الخوارزميات الموضعية:
من خلال ممارسة مثل هذه المشكلات والاستراتيجيات، يمكنك تحسين مهاراتك في حل المشكلات والاستعداد بشكل أفضل لمواجهة تحديات البرمجة المختلفة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3