Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การหมุนองค์ประกอบของเมทริกซ์สี่เหลี่ยมจัตุรัส JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์อาร์เรย์ของตัวอักษรแบบสองมิติ (จำเป็นต้องมีเมทริกซ์สี่เหลี่ยมจัตุรัส) แบบนี้ -

const arr = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];

ฟังก์ชันควรสร้างอาร์เรย์ใหม่ที่นำองค์ประกอบแบบเกลียวจากอาร์เรย์อินพุตโดยเริ่มจากตำแหน่ง (0, 0) และส่งคืนอาร์เรย์มิติเดียวนั้น

ดังนั้น สำหรับอาร์เรย์นี้ เกลียวควรมีลักษณะดังนี้ −

const output = [1, 2, 3, 6, 9, 8, 7, 4, 5];

เราจะสร้างตัวแปรชั่วคราวที่ชี้ไปที่แถวปัจจุบันและคอลัมน์ปัจจุบันทั้งที่จุดเริ่มต้นและจุดสิ้นสุด

ด้วยวิธีนี้ เราสามารถเพิ่มแถวเริ่มต้นและคอลัมน์เริ่มต้นซ้ำได้ และลดแถวสิ้นสุดและคอลัมน์สิ้นสุดในลักษณะที่หมุนวนไปทางกึ่งกลางของเมทริกซ์

ตัวอย่าง

const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ];
const spiral = (arr = []) => {
   if (!arr || arr.length === 0) {
      return [];
   };
   let startRow = 0;
   let startCol = 0;
   let res = [];
   let endCol = arr[0].length - 1;
   let endRow = arr.length - 1;
   while (startRow <= endRow && startCol <= endCol) {
      for (let i = startCol; i <= endCol; i++) {
         res.push(arr[startRow][i]);
      }
      startRow++;
      for (let i = startRow; i <= endRow; i++) {
         res.push(arr[i][endCol]);
      }
      endCol--;
      if (startRow <= endRow) {
         for (let i = endCol; i >= startCol; i--) {
            res.push(arr[endRow][i]);
         }
         endRow--;
      }
      if (startCol <= endCol) {
         for (let i = endRow; i >= startRow; i--) {
            res.push(arr[i][startCol]);
         } startCol++;
      }
   }
   return res;
};
console.log(spiral(arr));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

[
   1, 2, 3, 6, 9,
   8, 7, 4, 5
]