当前位置: 首页 > news >正文

全国p2p网站建设沈阳市营商环境建设监督局网站

全国p2p网站建设,沈阳市营商环境建设监督局网站,新网站怎么快速收录必做,如何制作公司app题目说明 给定一个 n n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明#xff1a;你必须在原地旋转图像#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入…题目说明 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明你必须在原地旋转图像这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例 2: 给定 matrix [ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,12,16] ], 原地旋转输入矩阵使其变为: [ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11] ] 分析 旋转图像这个应用在图片处理的过程中非常常见。我们知道对于计算机而言图像其实就是一组像素点的集合所谓点阵所以图像旋转的问题本质上就是一个二维数组的旋转问题。 方法一数学方法转置再翻转 我们可以利用矩阵的特性。所谓顺时针旋转其实就是先转置矩阵然后翻转每一行。 代码如下 public void rotate(int[][] matrix) {int n matrix.length;// 转置矩阵for (int i 0; i n; i)for (int j i; j n; j) {int tmp matrix[i][j];matrix[i][j] matrix[j][i];matrix[j][i] tmp;}// 翻转行for( int i 0; i n; i ){for( int j 0; j n/2; j ){int tmp matrix[i][j];matrix[i][j] matrix[i][n-j-1];matrix[i][n-j-1] tmp;}} }复杂度分析 时间复杂度O(N^2) 这个简单的方法已经能达到最优的时间复杂度O(N^2) 因为既然是旋转那么每个点都应该遍历到N^2的复杂度不可避免。 空间复杂度O(1)。旋转操作是原地完成的只耗费常数空间 方法二分治分为四部分旋转 方法 1 使用了两次矩阵操作能不能只使用一次操作的方法完成旋转呢 为了实现这一点我们来研究每个元素在旋转的过程中如何移动。 这提供给我们了一个思路可以将给定的矩阵分成四个矩形并且将原问题划归为旋转这些矩形的问题。这其实就是分治的思想。 具体解法也很直接可以在每一个矩形中遍历元素并且在长度为 4 的临时列表中移动它们。 代码如下 public void rotate(int[][] matrix) {int n matrix.length;for (int i 0; i n / 2 n % 2; i) {for (int j 0; j n / 2; j) {int[] tmp new int[4];int row i;int col j;for (int k 0; k 4; k) {tmp[k] matrix[row][col];// 定位下一个数int x row;row col;col n - 1 - x;}for (int k 0; k 4; k) {matrix[row][col] tmp[(k 3) % 4];int x row;row col;col n - 1 - x;}}} }复杂度分析 时间复杂度O(N^2) 是两重循环的复杂度。 空间复杂度O(1) 由于我们在一次循环中的操作是“就地”完成的并且我们只用了长度为 4 的临时列表做辅助。 方法三分治法改进单次循环内完成旋转 大家可能也发现了我们其实没有必要分成4个矩阵来旋转。这四个矩阵的对应关系其实是一目了然的我们完全可以在一次循环内把所有元素都旋转到位。 因为旋转的时候是上下、左右分别对称的所以我们遍历元素的时候只要遍历一半行、一半列就可以了1/4元素。 展示代码如下 public void rotate(int[][] matrix) {int n matrix.length;// 不区分子矩阵直接遍历每一个元素for( int i 0; i (n 1)/2; i ){for( int j 0; j n/2; j ){int temp matrix[i][j]; //2,2matrix[i][j] matrix[n-j-1][i];matrix[n-j-1][i] matrix[n-i-1][n-j-1];matrix[n-i-1][n-j-1] matrix[j][n-i-1];matrix[j][n-i-1] temp;}} }复杂度分析 时间复杂度O(N^2)是两重循环的复杂度。 空间复杂度O(1)。我们在一次循环中的操作是“就地”完成的。
http://www.pierceye.com/news/125306/

相关文章:

  • 建行个人网上登录入口优化网站结构一般包括
  • 好看的网站页面WordPress知更鸟主题怎样安装
  • 如何查网站是否备案免费建网站代码
  • 曲沃网站开发新注册的公司怎么做网站
  • 企业网站无线端怎么做塑胶科技东莞网站建设
  • 图片发到哪些网站 seo阜沙网站建设
  • 企业开源建站系统大连百度首页优化
  • 通辽做网站有没有智慧软文发稿平台
  • 网站别人做的我自己怎么续费福州网站建站公司
  • 青岛高端网站开发wordpress修改logo地址
  • 做网站实名认证有什么用青岛网站建设运营
  • 大数据分析网站做汽车保养的网站上
  • 网站开发费用一般是多少怎么建设宣传网站
  • 做网站的背景怎么做ps免费模板网站
  • 为什么要建设应急管理网站sketch做网站
  • 做的网站在百度上搜不出来的宁波关键词优化平台
  • 哪里有手机网站建设公司有道网站收录提交入口
  • 赣州网站建设较好的公司贵州网站建设hsyunso
  • 网站建设和管理是教什么科目鹤壁网站建设鹤壁
  • 网站域名和邮箱域名解析国外网站国内做二维码
  • 万万州州微微网站网站建建设设福州建设网站效果图
  • 长安网站建设详细教程鸿科经纬教网店运营推广
  • 微信营销模式有seo短视频网页入口引流推广
  • 做商城网站简单吗长春网站建设服务
  • 工厂弄个网站做外贸如何app开发报价公司
  • 网销网站建设流程如何创建网站挣钱
  • 韶关网站制作手机推广app
  • Linux做视频网站网速均衡网页编辑实践报告
  • 做ppt好的模板下载网站如何查看网站空间商
  • 武义公司网站建设公司如何建设网站首页