Algorithm --> 顺序打印矩阵】的更多相关文章

顺序打印矩阵 思路 参考代码 #include <iostream> using namespace std; ], int row, int col) { || col < ) return; , down = row -, left = , right = col -; ; while(up <= down && left <= right) { for(i = left; i <= right; ++i) cout << a[up][i…
题目:输入一个矩阵,按照从外向里的顺序依次打印出每一个数.(画图让抽象的问题形象化) 思路:打印矩阵时,把每一层当做一个圈来打印,找到打印整个矩阵的截止条件. 从上图中我可以看到一个6*6的矩阵(长宽分别为cloums,rows)最后一圈的最左边的顶点上面的坐标为(2,2),我们同时发现在一个5*5的矩阵中最后一圈的最左边的顶点的坐标也为(2,2),并且这个顶点的坐标的横坐标和纵坐标是相同的暂且设置为(start,start),因此我们可以得到截止条件即为,cloums>startX*2,row…
/* 题目: 输入一个矩阵,按照从外到内顺时针的顺序依次打印每一个数字. */ /* 思路: 1.将打印矩阵看作是打印一个个从外向内的环. 2.每一个环都有一个起始节点,起始节点的坐标*2小于行数和列数. 3.对于每一个环,分别打印从左到右,从上到下,从右到左,从下到上的数字. */ #include<iostream> #include<string.h> #include<algorithm> #include<cmath> #include<st…
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数 字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路1(自己想的): 每次打印一行矩阵,然后将剩余的部分逆时针旋转90度,递归打印即可. 代码: public ArrayList<Integer> printMatrix(int [][] matrix) { Array…
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路: 把矩阵想象成若干个圈,通过循环操作来打印矩阵,每次打印矩阵中的一个圈: 1.循环起始条件和结束条件: 起始条件:(1,1),(2,2)...(start,start) 结束条件:columns>start*2 &&a…
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩阵,依照从外向里以顺时针的顺序依次打印出每一个数字,比如,假设输入例如以下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 输入: 输入可能包含多个測试例子,对于每一个…
这几天参加面试,本来笔试比较简单,但是在面试的时候,技术面试官说让我现场写一个算法,顺时针打印矩阵的坐标,如图所示 顺序为,0,1,2,3,4,9,14,19,24,23,22,21,20,15,10,5,6,7,8,13,18,17,16,11,12 假设 0的坐标为(0,0),1的坐标为(0,1),5的坐标为(1,0)其他以此类推. 题目是打印出来顺序的坐标. 当场这道题我没写出来,后来面试官让我回家写,然后发到他的邮箱.回到家网上找了一下,也没有好的解决方案,只好自己写了. 总体思路采用一…
顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路 选坐标为(0,0),(1,1)...的点记为(start,start),作为开始坐标,下一圈开始坐标为(start+1,start+1): 判断是否进入下一圈(即是否打印完成)的条件是rows>start*…
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 题目分析 首先我们需要把这个复杂的问题分解为简单的问题,打印矩阵也就是一圈一圈的打印出来,所以我们需要解决的问题就是: 1.什么时候该继续打印下一圈即里面那一圈,也就是要找到循环的条件. 2.一圈该如何打印. 那么什么是循环结束…
本题来自<剑指offer> 顺时针打印矩阵 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路: 思考两个问题,分两步走: 第一步:总结,一个矩阵总共要走几圈?条件是行和列要大于圈数的2倍. 第二步:每一圈该怎么遍历?外圈是先第一行,最后一列,最后一行,第一列的方…