工作学习之余,没事会写写力扣里的算法题目~这个算法题目比较经典,推荐座位算法什么的应该会用到,题目是
给大家推荐一下自己的思路~循环push数组,然后判断边界和圈数。代码为
var spiralOrder = function (matrix) {
if (matrix.length === 0) return [];
if (matrix.length === 1) return matrix[0];
let arr = [];
let x = matrix[0].length; //横长
let y = matrix.length; //长
let length = x * y; // 总数
let i = 0; //横的
let j = 0; // 树的
let n = 0; //记录多少圈
let r = "r";//记录方向
for (let a = 0; a < length; a++) {
arr.push(matrix[i][j]);
//判断边界
if ( r === "r" && j === x - n - 1 && i !== y - n - 1) {
// console.log(i,j)
r = "d";
} else if ( r === "d" && j === x - n - 1 && i === y - n - 1) {
// console.log(i,j)
r = "l";
} else if (r === "l" && j === n && i === y - n - 1) {
// console.log(matrix[i][j])
r = "u";
}
// 判断4个方向
if (r == "r") {
j++;
} else if (r == "d") {
i++;
} else if (r == "l") {
j--;
} else if (r == "u") {
if (i == n + 1) { //r 第二圈开始,跳到r就可以
n++;
r = "r";
j++;
} else {
i--;
}
}
}
return arr;
};
其中一种解法–