मान लीजिए हमारे पास कार्यों की एक सूची है और लोगों की एक और सूची है। tasks[i] i-वें कार्य को करने के लिए आवश्यक ताकत की मात्रा निर्धारित करता है। और people[i] i-वें व्यक्ति की ताकत की मात्रा निर्धारित करता है। अंत में, हमें उन कार्यों की संख्या ढूंढनी है जो पूरे हो सकते हैं यदि एक व्यक्ति अधिकतम एक कार्य कर सकता है।
उदाहरण के लिए, यदि इनपुट है tasks = [4, 3, 9, 15], people = [10, 5, 3, 2], तो आउटपुट होगा 3, क्योंकि पहला व्यक्ति कार्य 9 कर सकता है, दूसरा व्यक्ति कार्य 4 कर सकता है, तीसरा व्यक्ति कार्य 3 कर सकता है, और चौथा व्यक्ति कोई कार्य नहीं कर सकता।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- tasks सूची को सॉर्ट करें, people सूची को सॉर्ट करें
- ct := 0, ind := 0
- i के लिए 0 से people के आकार तक की रेंज में, करें
- j के लिए ind से tasks के आकार तक की रेंज में, करें
- यदि people[i] >= tasks[j], तो
- ct := ct + 1
- ind := ind + 1
- लूप से बाहर निकलें
- अन्यथा,
- लूप से बाहर निकलें
- यदि people[i] >= tasks[j], तो
- j के लिए ind से tasks के आकार तक की रेंज में, करें
- ct वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, tasks, people): tasks.sort() people.sort() ct=0 ind=0 for i in range(len(people)): for j in range(ind,len(tasks)): if people[i]>=tasks[j]: ct+=1 ind+=1 break else: break return ct ob = Solution() tasks = [4, 3, 9, 15] people = [10, 5, 3, 2] print(ob.solve(tasks, people))
इनपुट
[4, 3, 9, 15], [10, 5, 3, 2]
आउटपुट
3