สมมติว่าเรามีรายการไบนารีที่เรียกว่าไฟท์เตอร์ และรายการไบนารีอีกรายการที่เรียกว่าบอส ในรายการนักสู้ 1 คนเป็นตัวแทนของนักสู้ ในทำนองเดียวกันในรายชื่อผู้บังคับบัญชา 1 เป็นตัวแทนของเจ้านาย นักสู้คนนั้นสามารถเอาชนะแถวของเจ้านายได้หากมีนักสู้มากกว่าผู้บังคับบัญชา เราต้องคืนเมทริกซ์บอสใหม่โดยลบแถวบอสที่แพ้ออก
ดังนั้นหากอินพุตเป็นเหมือนไฟท์เตอร์ =[0,1,1]
0 | 1 | 1 |
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
แล้วผลลัพธ์ที่ได้จะเป็น
0 | 1 | 1 |
1 | 1 | 1 |
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
fighter_cnt :=ผลรวมขององค์ประกอบทั้งหมดของนักสู้
-
ผลลัพธ์ :=รายการใหม่
-
สำหรับแต่ละแถวในบอส ทำ
-
ถ้า fighter_cnt <=ผลรวมของแต่ละองค์ประกอบในแถว แล้ว
-
แทรกแถวที่ท้ายผลลัพธ์
-
-
-
ส่งคืนผลลัพธ์
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, fighters, bosses): fighter_cnt = sum(fighters) result = [] for row in bosses: if fighter_cnt <= sum(row): result.append(row) return result ob = Solution() fighters = [0, 1, 1] bosses = [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]] print(ob.solve(fighters, bosses))
อินพุต
[0, 1, 1], [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]
ผลลัพธ์
[[0, 1, 1], [1, 1, 1]]