关闭

面试题90:旋转数组

269人阅读 评论(0) 收藏 举报
分类:

题目:

有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。

给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。

测试样例:
[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
思路:
第一步:

将矩阵元素以次对角线为轴进行交换,交换后得到如下矩阵:

[[9,6,3],[8,5,2],[7,4,1]],3
第二步:

将第一步得到的矩阵的第i行与第n-i+1行进行交换。

实现:

class Transform {
public:
    vector<vector<int> > transformImage(vector<vector<int> > mat, int n) {
        int size=mat.size();
        if(size!=n) return mat;
        // write code here
        for(int i=0;i<n-1;i++){//以次对角线为轴进行交换
            for(int j=0;j<n-i-1;j++){
                int temp=mat[i][j];
                mat[i][j]=mat[n-j-1][n-i-1];
                mat[n-j-1][n-i-1]=temp;
            }
        }
        for(int i=0;i<n/2;i++){
            for(int j=0;j<n;j++){
                int temp=mat[i][j];
                mat[i][j]=mat[n-i-1][j];
                mat[n-i-1][j]=temp;
            }
        }
        return mat;
    }
};


0
0
查看评论

[C++]Rotate Array 旋转数组

leetcode 原题链接:https://leetcode.com/problems/rotate-array/ Rotate an array of n elements to the right by k steps. For e...
  • lyy_hit
  • lyy_hit
  • 2015-08-21 10:06
  • 896

剑指Offer(第二版)面试题11:旋转数组的最小数字

旋转数组中的最小值,二分查找的具体使用案例
  • qq_25827845
  • qq_25827845
  • 2017-05-14 11:14
  • 723

小米笔试题(查找旋转数组中的元素)

今天参加小米现场笔试,遇到一个关于查找旋转数组中的元素算法问题,在这里记录一下。
  • a1181191837
  • a1181191837
  • 2015-10-08 23:25
  • 1295

旋转数组的最小数字 python

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 ...
  • XiaoXIANGZI222
  • XiaoXIANGZI222
  • 2017-02-18 20:42
  • 795

旋转数组中元素的查找

题目描述 有一个排过序的数组,包含n个整数,但是这个数组向左进行了一定长度的移位,例如,原数组为[1,2,3,4,5,6],向左移位5个位置即变成了[6,1,2,3,4,5],现在对于移位后的数组,需要查找某个元素的位置。请设计一个复杂度为log级别的算法完成这个任务。 给定一个in...
  • Before1993
  • Before1993
  • 2016-05-04 15:11
  • 331

面试题:旋转数组

这是搜狐2015年实习生招聘研发岗位笔试的第一道编程题. 题目描述:输入一个数组,将其循环旋转k个位置,要求时间复杂度为O(N),空间复杂度越低越好. 以一个例子来说明: 初始数组: 1,2,3,4,5 k=2 首先倒置整个数组:5,4,3,2,1 然后倒置前k个:4,5,3,2,1 ...
  • chfe007
  • chfe007
  • 2015-04-16 21:17
  • 567

【剑指offer】旋转数组的最小值

现在对算法真的是由衷地热爱啊,总是忍不住想要A题(本科都没这意识,哎,把时间都浪费在了考试拿奖学金和所谓的学生工作上了),而且数学一直以来都是自己的强项,希望在这方面以后能应用好,虽然在ACM方面还只是个小学生,以后即使工作了,也要把ACM坚持下去,无关乎工作,只关乎兴趣。 依然是...
  • mmc_maodun
  • mmc_maodun
  • 2014-05-08 20:30
  • 2412

解题笔记(35)——旋转数组中的最小元素

问题描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。       思...
  • wuzhekai1985
  • wuzhekai1985
  • 2011-08-30 21:58
  • 11054

剑指offer第六题【旋转数组的最小数字】c++实现

旋转数组的最小数字 参与人数:3258时间限制:1秒空间限制:32768K通过比例:14.10%最佳记录:0 ms|0K(来自  Wocao) 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出...
  • u011692312
  • u011692312
  • 2015-10-14 11:30
  • 417

python 二维数组90度旋转

#/usr/bin/env python #-*- coding: utf-8 -*- """ [0, 1, 2, 3] [0, 1, 2, 3] [0, 1, 2, 3] [0, 1, 2, 3] 2维数组顺时针90度旋转后结果如下 [0, 0, 0, 0] [...
  • lingdaz
  • lingdaz
  • 2016-03-21 22:23
  • 2449
    欢迎订阅公众号:IT程序员开发
    欢迎订阅公众号:IT程序员开发
    个人资料
    • 访问:83820次
    • 积分:2902
    • 等级:
    • 排名:第14452名
    • 原创:216篇
    • 转载:4篇
    • 译文:0篇
    • 评论:27条
    最新评论