สมมติว่าเรามีรายการงานและรายชื่อบุคคลอื่นๆ งาน [i] กำหนดจำนวนความแข็งแกร่งที่จำเป็นในการปฏิบัติงาน ith และผู้คน[i] กำหนดจำนวนความแข็งแกร่งที่บุคคลมี สุดท้ายนี้ เราต้องค้นหาจำนวนงานที่จะสำเร็จได้ถ้าคนๆ หนึ่งสามารถทำงานได้มากสุดหนึ่งงาน
ดังนั้นหากอินพุตเป็นเหมือนงาน =[4, 3, 9, 15] คน =[10, 5, 3, 2] ผลลัพธ์จะเป็น 3 เนื่องจากคนแรกสามารถทำงาน 9 คนที่สองทำได้ ดำเนินการภารกิจที่ 4 บุคคลที่สามสามารถทำงานที่ 3 และบุคคลที่สี่ไม่สามารถทำงานใด ๆ ได้
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- จัดเรียงรายการงาน จัดเรียงรายการบุคคล
- ct:=0, ind:=0
- สำหรับผมอยู่ในช่วง 0 ถึงขนาดคน ทำ
- สำหรับ j ที่อยู่ในขอบเขตตามขนาดของงาน ให้ทำ
- ถ้า people[i]>=งาน[j] แล้ว
- ct :=ct + 1
- ind :=ind + 1
- ออกมาจากวงจร
- มิฉะนั้น
- ออกมาจากวงจร
- ถ้า people[i]>=งาน[j] แล้ว
- สำหรับ j ที่อยู่ในขอบเขตตามขนาดของงาน ให้ทำ
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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