当前位置:首页 > 编程笔记 > 正文
已解决

【算法练习】数组操作

来自网友在路上 11028102提问 提问时间:2023-11-21 17:50:53阅读次数: 102

最佳答案 问答题库1028位专家为你答疑解惑

二维数组顺时针旋转

解决思路

  1. 创建新数组,将原数组的数据按照一定的顺序放入新数组中。
  2. 如果是顺时针的话,原数组中第一排的元素是应该放在新数组最后一列中的。

Java实现

public class RotateOne {public static void main(String[] args) {int[][] A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int n = 3;int[][] B = new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {B[j][n - 1 - i] = A[i][j];}}ArrayUtil.printArray(B);}
}

二维数组逆时针旋转

解决思路

  1. 逆时针的话,原数组第一排的元素放在新数组的第一列

Java实现

public class RotateTwo {public static void main(String[] args) {int[][] A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int n = 3;int[][] B = new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {B[n - 1 - j][i] = A[i][j];//A[0][0]-->B[2][0]//A[0][1]-->B[1][0]}}ArrayUtil.printArray(B);}
}

螺旋矩阵

https://leetcode.cn/problems/spiral-matrix/

解决思路

  1. 设定数组的边界,并且不断的更新边界值。
  2. 跳出循环的条件,当更新边界值不满足条件的时候,跳出循环。

Java实现

class Solution_LC54_II {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res = new ArrayList<>();if (matrix.length == 0) {return res;}int top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1;while (true) {for (int i = left; i <= right; i++) {res.add(matrix[top][i]);}if (++top > bottom) {break;}for (int i = top; i <= bottom; i++) {res.add(matrix[i][right]);}if (--right < left) {break;}for (int i = right; i >= left; i--) {res.add(matrix[bottom][i]);}if (--bottom < top) {break;}for (int i = bottom; i >= top; i--) {res.add(matrix[i][left]);}if (++left > right) {break;}}return res;}
}

在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【算法练习】数组操作":http://eshow365.cn/6-41433-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!