《LeetCode力扣练习》代码随想录——数组(螺旋矩阵II

编程入门 行业动态 更新时间:2024-10-25 23:21:22

《LeetCode力扣练习》代码随想录——<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组(螺旋矩阵II"/>

《LeetCode力扣练习》代码随想录——数组(螺旋矩阵II

《LeetCode力扣练习》代码随想录——数组(螺旋矩阵II—Java)



刷题思路来源于 代码随想录

59. 螺旋矩阵 II
  • 左闭右开——[x,y)
    class Solution {public int[][] generateMatrix(int n) {if(n==1){return new int[][]{{1}};}int[][] result=new int[n][n];int start=0;int row=-1;int col=-1;int loop=0;int offset=1;int count=1;for(;loop<(n/2);loop++){for(col=start;col<(n-offset);col++){result[start][col]=count++;}for(row=start;row<(n-offset);row++){result[row][col]=count++;}for(;col>start;col--){result[row][col]=count++;}for(;row>start;row--){result[row][col]=count++;}start++;offset++;}if(n%2==1){result[start][start]=count;}return result;}
    }
    
54. 螺旋矩阵
  • 左闭右开——[x,y)
    class Solution {public List<Integer> spiralOrder(int[][] matrix) {int m=matrix.length;int n=matrix[0].length;if(m==1&&n==1){return Collections.singletonList(matrix[0][0]);}List<Integer> result=new ArrayList<>();int startRow=0;int startCol=0;int row=-1;int col=-1;int offset=1;int loop=m<n?(m/2):(n/2);for(;loop>0;loop--){for(col=startCol;col<(n-offset);col++){result.add(matrix[startRow][col]);}for(row=startRow;row<(m-offset);row++){result.add(matrix[row][col]);}for(;col>startCol;col--){result.add(matrix[row][col]);}for(;row>startRow;row--){result.add(matrix[row][col]);}startRow++;startCol++;offset++;}if((m<n?m:n)%2==1){if(n>m){for(col=startCol;col<=(n-offset);col++){result.add(matrix[startRow][col]);}}else{for(row=startRow;row<=(m-offset);row++){result.add(matrix[row][startCol]);}}}return result;}
    }
    
LCR 146. 螺旋遍历二维数组
  • 左闭右开——[x,y)
    class Solution {public int[] spiralArray(int[][] array) {int m=array.length;if(m==0){return new int[]{};}int n=array[0].length;if(m==1&&n==1){return new int[]{array[0][0]};}int[] result=new int[m*n];int startRow=0;int startCol=0;int row=-1;int col=-1;int offset=1;int loop=(m<n?m:n)/2;int count=0;for(;loop>0;loop--){for(col=startCol;col<(n-offset);col++){result[count++]=array[startRow][col];}for(row=startRow;row<(m-offset);row++){result[count++]=array[row][col];}for(;col>startCol;col--){result[count++]=array[row][col];}for(;row>startRow;row--){result[count++]=array[row][col];}offset++;startRow++;startCol++;}if((m<n?m:n)%2==1){if(n<m){for(row=startRow;row<=(m-offset);row++){result[count++]=array[row][startCol];}}else{for(col=startCol;col<=(n-offset);col++){result[count++]=array[startRow][col];}}}return result;}
    }
    

更多推荐

《LeetCode力扣练习》代码随想录——数组(螺旋矩阵II

本文发布于:2023-11-15 09:13:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1597263.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   矩阵   螺旋   代码   随想录

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!