题目

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Follow up:
Could you do this in-place?

代码:oj测试通过 Runtime: 53 ms

 class Solution:
# @param matrix, a list of lists of integers
# @return a list of lists of integers
def rotate(self, matrix):
if matrix is None:
return None
if len(matrix[0]) < 2 :
return matrix N = len(matrix[0]) for i in range(0, N/2, 1):
for j in range(i, N-i-1, 1):
ori_row = i
ori_col = j
row = ori_row
col = ori_col
for times in range(3):
new_row = col
new_col = N-row-1
matrix[ori_row][ori_col],matrix[new_row][new_col] = matrix[new_row][new_col],matrix[ori_row][ori_col]
row = new_row
col = new_col
return matrix

思路:

题意是将一个矩阵顺时针旋转90°

小白的解决方法是由外层向里层逐层旋转;每层能够组成正方形对角线的四个元素依次窜一个位置(a b c d 变成 d a b c)。

四个元素转换位置的时候用到一个数组操作的技巧,每次都要第一个位置的元素当成tmp,交换第一个位置的元素与指针所指元素的位置。

原始:a b c d

第一次交换:b a c d

第二次交换:c a b d

第三次交换:d a b c

这样的好处是代码简洁一些 思路比较连贯

Tips:

每层循环的边界条件一定要考虑清楚,小白一开始最外层循环的上届一直写成了N,导致一直不通过,实在是太低级的错误。以后还要加强代码的熟练度,避免出现这样的低级判断错误。

最新文章

  1. juery实现贪吃蛇的游戏
  2. React Native系列文章
  3. Activity详解三 启动activity并返回结果
  4. sql server 替换特殊符号
  5. ASP.net解析JSON例子
  6. cotex_m3内核提供的ITM串口打印调试
  7. Words in Coding Theory
  8. javascript读取本地文件
  9. 一周学会Mootools 1.4中文教程:(4)类型
  10. HDU2037今年暑假不AC(贪心)
  11. 高并发秒杀系统--Service事务管理与继承测试
  12. day25_python_1124
  13. 065 xftp的使用
  14. UIGestureRecognizer和UITouch
  15. CSDN日报20170312——《成功人士的七个习惯》
  16. Java回调方法的设计思路
  17. JavaScript实现排序算法总结
  18. python处理csv
  19. C语言宏的定义和宏的使用方法(#define)
  20. 【最小割】【Dinic】【强联通分量缩点】bzoj1797 [Ahoi2009]Mincut 最小割

热门文章

  1. Android Broadcast Receive
  2. OutOfMemoryError异常 和 StackOverflowError异常
  3. WORD窗体保护密码清除
  4. java Vamei快速教程19 嵌套类
  5. linux 命令——16 which(转)
  6. Sql Server配置管理器与 Sql Server Management Studio
  7. JS中的toString()和valueOf()方法
  8. 64位系统中为VS2012添加OpenGL工具包
  9. mkfs.xfs 命令找不到的解决方法
  10. Java如何将十六进制数转换为十进制数的自编程序