算法学习之实现二维矩阵的顺时针遍历
背景
有这么一道面试题,让顺时针输出一个二维矩阵。
思路
记录开始行开始列和结束行结束列,做为输出的边界
除了要输出的矩阵,我还设置了一个状态矩阵,用来记录矩阵中某一个元素输出与否,没有输出过的元素,才进行输出
实现
测试用的矩阵:
123
123
123
123
代码如下:
public class ExampleUnitTest {int[][] matrix = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}};int[][] hasPrintedMatrix = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};@Testpublic void addition_isCorrect() throws Exception {int endLine = 3, endColumn = 2;int startLine = 0, startColumn = 0;int i, j;while (startLine <= endLine && startColumn <= endColumn) {i = startLine;j = startColumn;// 从左上往右上for (; j < endColumn + 1; j++) {printData(i, j);}j--;i++;// 从右上往右下for (; i < endLine + 1; i++) {printData(i, j);}i--;j--;// 从右下到左下for (; j > startColumn - 1; j--) {printData(i, j);}i--;j++;// 从左下到左上for (; i > startLine; i--) {printData(i, j);}startLine++;startColumn++;endColumn--;endLine--;}}private void printData(int i, int j) {if (hasPrintedMatrix[i][j] == 0) {System.out.print(matrix[i][j] + " ");hasPrintedMatrix[i][j] = 1;}}}
结果
结语
方法似乎笨拙了一些,但……至少解决了问题
算法学习之实现二维矩阵的顺时针遍历相关推荐
- 力扣算法题—074搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: matrix ...
- [学习笔记]人工智能-神经网络对数据进行分类,构建二维矩阵
1.对投喂数据进行极值获取,构造更多数据做准备 示例 plot_decision_regions(x, y, ppn, resolution=0.02)def plot_decision_region ...
- 关于有序二维矩阵查找和字符串替换的两道算法题
最近看一本书上写到的两个面试题 于是实现了一下 感觉思路很好,大牛略过 : 1.对于一个二维矩阵,从左到右 从上到下 都是递增的,如何判断一个值是否在矩阵内部?(C实现 实现复杂度 O(n)) b ...
- java学习-zxing生成二维码矩阵的简单例子
这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency><gro ...
- matlab找出二维矩阵中最大值的位置或者最小值的位置
matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...
- 机器学习之数学基础(二)~数组、向量、矩阵、向量空间、二维矩阵
1. 概述 在学习机器学习(machine learning)或模式识别(pattern recognition)过程中,我经常会困惑于向量.数组和矩阵这三种数据结构,而在学习张学工教授<模式识 ...
- python 搜索二维矩阵
搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入:m ...
- LeetCode 73矩阵置零74搜素二维矩阵75颜色分类
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...
- 聚类算法学习指南(二)
http://hi.baidu.com/catfool/blog/item/c06bec3931a0efcad4622524.html 聚类算法学习指南(二) 2009-05-06 20:49 下图 ...
最新文章
- Linux Shell Tips小技巧
- c语言不同指令意识,C语言必须理清的概念1
- winsetup制作linux启动盘,winsetupfromusb怎样做linux启动盘
- springboot-web开发
- xcode 自动化出包
- ML.NET 示例:图像分类模型训练-首选API(基于原生TensorFlow迁移学习)
- 在SQL中使用PL/SQL函数存在的问题
- UI(1)---2018 UI 设计趋势
- bzoj3514 Codechef MARCH14 GERALD07加强版 lct预处理+主席树
- 初中理化生实验室仪器配置
- ps裁剪和裁切的区别_PS图片的裁剪和裁切的含义和应用
- 微信二维码海报推广示例
- 餐桌 (Standard IO)
- 大图片显示在客户端,被压扁失真的问题
- C++的名字空间(很重要)
- java 语言的简介
- 我是这样入门“机器学习”的
- 传智播客 php系列,传智播客PHP 2015-JS高级系列视频教程 83集
- 联想服务器报错“传感器ME Status已从不太严重状态转换至紧急状态”
- html5 u3m8,U3M8短语.doc