[LeetCode][JavaScript]Spiral Matrix
2015-09-27 15:55
591 查看
Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.For example,
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
You should return
[1,2,3,6,9,8,7,4,5].
https://leetcode.com/problems/spiral-matrix/
旋转抱歉。
开四个变量,代表剩余矩形长度的开始、结束和宽度的开始、结束。
四个值圈定了一个范围(也可以理解为两个点四个坐标:左上角X,Y和右下角X,Y,四个坐标确定一个矩形)。
一开始高度从0到matrix.length,长度从0到matrix[0].length。
每计算一边,缩小对应的长度或宽度的范围。
/** * @param {number[][]} matrix * @return {number[]} */ var spiralOrder = function(matrix) { var res = [], i; var m = matrix.length, n = (m === 0 ? 0 : matrix[0].length); var heightStart = 0, heightEnd = m - 1, widthStart = 0, widthEnd = n - 1; while(heightStart <= heightEnd && widthStart <= widthEnd){ for(i = widthStart; i <= widthEnd; i++){ res.push(matrix[heightStart][i]); } heightStart++; for(i = heightStart; i <= heightEnd; i++){ res.push(matrix[i][widthEnd]); } widthEnd--; if(heightStart <= heightEnd){ for(i = widthEnd; i >= widthStart; i--){ res.push(matrix[heightEnd][i]); } heightEnd--; } if(widthStart <= widthEnd){ for(i = heightEnd; i >= heightStart; i--){ res.push(matrix[i][widthStart]); } widthStart++; } } return res; };
相关文章推荐
- js动态控制多选框的选中项
- JSP表单提交中文乱码
- JavaScript高级程序设计之面向对象的程序设计之创建对象之原型模式 第6.2.3讲笔记
- HTML5 JS API 本地存储LocalStorage基本操作
- "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"的分析
- Json数据解析
- JSON.stringify()JSON转字符串 和 JSON.parse()字符串转JSON对象
- js最新手机号码、身份证正则表达式
- Servlet、JSP学习总结
- javascript dom读取xml
- JSON数据转换
- JavaScript高级程序设计之面向对象的程序设计之创建对象之 构造函数模式第6.2.2讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之工厂模式第6.2.1讲笔记
- javascript中的array对象属性及方法
- javascript中的算数运算
- 标 题: JavaScript真的要一统江湖了
- json学习初体验--第三者jar包实现bean、List、map创json格式
- javascript中的数据类型---数字
- JavaScript高级程序设计之面向对象的程序设计之理解对象第6.1讲笔记
- JavaScript高级程序设计之引用类型之单体内置对象之Math对象第5.7.2讲笔记