k6k4刷题-矩阵打印--螺旋状
来源:互联网 发布:android 仿淘宝购物车 编辑:程序博客网 时间:2024/06/10 17:11
今天刷了一道k6k4上的题目,分享一下(欢迎加 算法刷题交流QQ群:474397739 一起讨论解决各大刷题网站题目)
原题:http://www.k6k4.com/code/qshow/aanstqymm1509803030578
从矩阵的第一个元素A[0][0] 开始,顺时针遍历矩阵的最外层元素,然后从A[1][1]遍历矩阵第二层元素,以此类推,直到遍历完所有的矩阵元素。将结果按遍历顺序放在数组中返回。提示:矩阵不一定是方正
解题思路:
固定四个顶点,按顺序打印上边、右边、下边、左边,需要特别注意已经遍历过的顶点,使用一个数组记录已经遍历过的点。
直接上代码:
import java.util.*; public class Main { public static void main(String[] args) { int[][] x = new int[][]{ new int[]{11, 12, 13, 14, 15}, new int[]{16, 17, 18, 19, 20}, new int[]{21, 22, 23, 24, 25}, new int[]{26, 27, 28, 29, 30}, new int[]{31, 32, 33, 34, 35}, }; int[] result = solution(x, 5, 5); StringBuffer sb = new StringBuffer(); for (int i = 0; i < result.length; i++) { sb.append(result[i] + ","); } String str = sb.toString(); if (str.endsWith(",")) { str = str.substring(0, str.length() - 1); } System.out.println(sb); //输出:11,12,13,14,15,20,25,30,35,34,33,32,31,26,21,16,17,18,19,24,29,28,27,22,23 } public static int[] solution(int[][] A, int n, int m) { boolean[][] visited = new boolean[n][m]; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) visited[i][j] = false; int left = 0; int right = m - 1; int up = 0; int down = n - 1; int index = 0; int len = n * m; int[] result = new int[len]; int x, y; while (index < len) { //从左上角开始,从左到右打印 x = left; y = up; for (; x <= right && !visited[y][x]; x++) { result[index++] = A[y][x]; visited[y][x] = true; } //从右上角(往下移一个元素)开始,从上往下打印 x = right; y = up + 1; for (; y <= down && !visited[y][x]; y++) { result[index++] = A[y][x]; visited[y][x] = true; } //从右下角(往左移一个元素)开始,从右往左打印 x = right - 1; y = down; for (; x >= left && !visited[y][x]; x--) { result[index++] = A[y][x]; visited[y][x] = true; } //从左下角(往上移一个元素)开始,从下往上打印 x = left; y = down - 1; for (; y >= up && !visited[y][x]; y--) { result[index++] = A[y][x]; visited[y][x] = true; } left++; up++; right--; down--; } return result; } }
阅读全文
0 0
- k6k4刷题-矩阵打印--螺旋状
- 按照顺时针螺旋状打印所有矩阵元素
- 刷题--顺时针打印矩阵
- 螺旋状输出
- 、一个n*n数组,要求用螺旋状打印出数组中的元素
- lintcode刷题--之字形打印矩阵
- 打印矩阵
- 打印矩阵
- 顺时针打印旋转打印矩阵
- 顺时针打印矩阵(旋转矩阵)
- 特殊矩阵打印
- 打印一个字符矩阵
- 打印正方形整数矩阵
- 螺旋矩阵的打印
- 打印螺旋矩阵
- 打印各种矩阵
- C++ 打印蛇形矩阵
- 顺时针打印矩阵
- 图形学基础:第4章 画三角形
- C3P0_and_pro.properties配置文档代码
- java8中Hashmap改进
- 12230
- Ubuntu与windows-ssh反向隧道
- k6k4刷题-矩阵打印--螺旋状
- Macbook 中关于下载器和Youtube视频及字幕下载播放问题
- python3格式化输出
- CCF-训练50题-NO.2-图像旋转问题
- tf.identity的意义以及用例
- HDFS JAVA API操作
- iOS 常用的宏定义
- NUIST OJ 1350-1352 面朝大海,春暖花开【初识线段树】
- 剑指offer 从尾到头打印链表