এখানে পোস্ট করা অন্যদের চেয়ে এটি একটি উল্লেখযোগ্যভাবে আরও কার্যকর সমাধান, বিশেষত শীর্ষ সমাধান:
bool isSubset = t2.All(elem => t1.Contains(elem));
আপনি যদি টি 2 তে এমন একক উপাদান খুঁজে পেতে পারেন যা টি 1-এ নেই, তবে আপনি জানেন যে টি 2 টি 1-এর কোনও উপসেট নয়। এই পদ্ধতির সুবিধাটি হ'ল এটি অতিরিক্ত স্থান বরাদ্দ না করে, সমস্ত জায়গায় জায়গায় করা হয়। তদ্ব্যতীত, এই সমাধানটি উপসেট শর্তটি লঙ্ঘনকারী একটি একক উপাদান খুঁজে পাওয়ার সাথে সাথেই এটি ভেঙে ফেলতে সক্ষম হবে, অন্যরা অনুসন্ধান চালিয়ে যাবে। নীচে সমাধানটির সর্বোত্তম লম্বা ফর্মটি দেওয়া হয়েছে, যা উপরের শর্টহ্যান্ড সমাধানের তুলনায় আমার পরীক্ষাগুলিতে কেবল সামান্য দ্রুত।
bool isSubset = true;
foreach (var element in t2) {
if (!t1.Contains(element)) {
isSubset = false;
break;
}
}
আমি সমস্ত সমাধানগুলির কিছু প্রাথমিক কর্মক্ষমতা বিশ্লেষণ করেছি এবং ফলাফলগুলি কঠোর। এই দুটি দ্রবণগুলি .Except () এবং .Intersect () সমাধানের চেয়ে প্রায় 100x দ্রুত এবং অতিরিক্ত মেমরি ব্যবহার করা হয় না।