有关二维数组面试---根据二维数组的特点
来源:互联网 发布:金山数据恢复安卓版 编辑:程序博客网 时间:2024/06/05 03:08
2.1.15 Rotate Image
描述
You are given an n*n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up: Could you do this in-place?
分析
图像旋转90度
首先想到,纯模拟,从外到内一圈一圈的转,但这个方法太慢。
如下图,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
图2-4 Rotate Image
或者,首先沿着水平中线翻转一次,然后沿着主对角线翻转一次。
function f(&$arr,$n){ if(false==is_array($arr)) return false; for($i=0;$i<$n-1;++$i){ $temp=$arr[$i][$i]; $arr[$i][$i]=$arr[$n-$i-1][$n-$i-1]; $arr[$n-$i-1][$n-$i-1]=$temp; } $mid=intval($n/2); for($i=0;$i<$mid;++$i){ for($j=0;$j<$n;$j++){ $temp=$arr[$i][$j]; $arr[$i][$j]=$arr[$n-$i-1][$j]; $arr[$n-$i-1][$j]=$temp; } }}
function isExists($arr,$value,$n,$m){ if(false===is_array($arr)) return false; $bn = 0; $bm = $m - 1; while ($bn >= $n || $bm >= 0) { if ($arr[$bn][$bm] == $value) { return true; } else if ($arr[$bn][$bm] < $value) { $bn++; } else { $bm--; } } return false;}上面这样需要输入二维数组和行数和列数,可以使用下面输入一维数组function isExists($arr,$value,$n,$m){ if(false===is_array($arr)) return false; $bn = 0; $bm = $m; while ($bn<$n&&$bm >= 0) { $temp=$arr[$bm+$bn*$m-1]; if ($temp== $value) { return true; } else if ($temp<$value) { $bn++; } else { $bm--; } } return false;}
0 0
- 有关二维数组面试---根据二维数组的特点
- 有关二维数组的动态分配
- 二维数组的有关指针
- 二维数组有关数据
- PHP根据二维数组的某键值合并二维数组
- 二维数组,根据二维数组内的元素进行排序
- 面试训练二维数组
- 初学者有关二维数组的疑问
- 二维数组中有关的值
- 有关二维数组的PAT题目
- 有关二维数组的一下东西
- 面试:数组:二维搜索数组
- 二维数组根据汉字排序
- 面试笔记--二维数组的查找
- 需要根据二维数组里面的某一个数组排序
- 笔试面试---二维数组与数组指针
- 二维数组的用法
- 二维数组的传递
- c++与C#的区别
- Download Linux Kernel
- Scala练习
- SQL server in 用法
- 《温故而知新》系列之自定义View基本知识
- 有关二维数组面试---根据二维数组的特点
- 将Url解析成对象
- Top Ten Best NBA Basketball Shoes 2016
- 当远见超出能力时,再去做管理
- setOff与scrollTop区别
- zmodem transfer cancled by remote side
- Android 全局异常捕获
- 23种代码坏味道
- Genymotion常见问题整合与解决方案