สมมติว่าเรามีเมทริกซ์ 2 มิติ โดยแต่ละแถวมีค่าสองค่า [height, count] ซึ่งบ่งชี้ว่าบุคคลนั้นให้ความสูง และมีจำนวน 'นับ' อยู่ข้างหน้าพวกเขาอย่างน้อยก็สูงพอๆ กับพวกเขา ตอนนี้พิจารณาว่ามีการสับเปลี่ยนคิว เราต้องกู้คืนลำดับเดิมของคิว
ดังนั้นหากอินพุตเป็นแบบ
2 | 2 |
4 | 0 |
5 | 0 |
แล้วผลลัพธ์ที่ได้จะเป็น
4 | 0 |
5 | 0 |
2 | 2 |
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
- N :=จำนวนแถวของเมทริกซ์
- จัดเรียงแถวเมทริกซ์ใหม่ตามความสูงที่เพิ่มขึ้นและจำนวนที่ลดลง
- ans :=ทำรายการขนาด N และเริ่มต้นรายการทั้งหมดเป็นโมฆะ
- สำหรับแต่ละส่วนสูง h และนับ c ในแถวเมทริกซ์ ทำ
- อุณหภูมิ :=0
- สำหรับแต่ละดัชนี i และค่าจำนวน ans ทำ
- ถ้า temp>
=c และ num เป็น null แล้ว
- ans[i] :=[h, c]
- ออกมาจากวงจร
- ถ้า num เป็น null หรือ num[0]>=h แล้ว
- อุณหภูมิ :=อุณหภูมิ + 1
- ถ้า temp>
=c และ num เป็น null แล้ว
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
ตัวอย่าง
class Solution: def solve(self, matrix): N = len(matrix) matrix.sort(key=lambda x: [x[0], -x[1]]) ans = [None] * N for h, c in matrix: temp = 0 for i, num in enumerate(ans): if temp >= c and num is None: ans[i] = [h, c] break if num is None or num[0] >= h: temp += 1 return ans ob = Solution() matrix = [ [2, 2], [4, 0], [5, 0] ] print(ob.solve(matrix))
อินพุต
[[2, 2],[4, 0],[5, 0]]
ผลลัพธ์
[[4, 0], [5, 0], [2, 2]]