Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Spiral Matrix II ใน Python - สร้างเมทริกซ์เกลียว

สมมติว่าเรามีจำนวนเต็มบวก n เราต้องสร้างเมทริกซ์สี่เหลี่ยมจัตุรัสที่มีองค์ประกอบ n² เรียงตามลำดับเกลียว (spiral order) ตัวอย่างเช่น ถ้า n = 4 เมทริกซ์จะเป็นดังนี้:

1234
1213145
1116156
10987

ขั้นตอนการทำงาน

  1. กำหนด (row1, col1) := (0, 0) และ (row2, col2) := (n, n) สร้างเมทริกซ์ res เติมด้วย 0 ตั้งค่า num := 1
  2. วนลูป while num <= n²:
    • วน i จาก col1 ถึง col2-1: กำหนด res[row1][i] = num เพิ่ม num ทีละ 1
    • วน i จาก row1+1 ถึง row2-1: กำหนด res[i][col2-1] = num เพิ่ม num
    • วน i จาก col2-2 ลงถึง col1: กำหนด res[row2-1][i] = num เพิ่ม num
    • วน i จาก row2-2 ลงถึง row1+1: กำหนด res[i][col1] = num เพิ่ม num
    • เพิ่ม row1 ลด row2 เพิ่ม col1 ลด col2
  3. คืนค่า res

ตัวอย่างโค้ด

class Solution(object):
    def generateMatrix(self, n):
        row1 = 0
        col1 = 0
        row2 = n
        col2 = n
        result = [[0 for i in range(n)] for j in range(n)]
        num = 1
        while num <= n**2:
            for i in range(col1, col2):
                result[row1][i] = num
                num += 1
            if num > n**2:
                break
            for i in range(row1+1, row2):
                result[i][col2-1] = num
                num += 1
            if num > n**2:
                break
            for i in range(col2-2, col1-1, -1):
                result[row2-1][i] = num
                num += 1
            if num > n**2:
                break
            for i in range(row2-2, row1, -1):
                result[i][col1] = num
                num += 1
            row1 += 1
            row2 -= 1
            col1 += 1
            col2 -= 1
        return result

ob1 = Solution()
print(ob1.generateMatrix(4))

อินพุต

4

เอาต์พุต

[[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]