zoukankan      html  css  js  c++  java
  • 程序员面试经典--数组

    题目描述

    有一副由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]]
    class Transform {
    public:
        vector<vector<int> > transformImage(vector<vector<int> > mat, int n) {
            // write code here
            int row = mat.size();
            int col = mat[0].size();
            vector<vector<int>>b = mat;
            //初始化矩阵的空间
            mat.clear();
            mat.resize(col);
            for (int i = 0; i < mat.size(); i++){
                mat[i].resize(row);
            }
            //制作逆时针转向的新矩阵
            for (int i = 0; i < col; i++){
                for (int j = 0; j < row; j++){
                    mat[i][j] = b[row - j -1][i];
                }
            }
            return mat;
        }
    };
    View Code

    2题目描述

    请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。

    给定一个N阶方阵int[][](C++中为vector<vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector<vector>),保证n小于等于300,矩阵中的元素为int范围内。

    测试样例:
    [[1,2,3],[0,1,2],[0,0,1]]
    返回:[[0,0,3],[0,0,0],[0,0,0]]

    class Clearer {
    public:
        vector<vector<int> > clearZero(vector<vector<int> > mat, int n) {
            // write code here// write code here
            int row = mat.size();
            int col = mat.size();
    
            vector<int>r(row);
            vector<int>c(col);
    
    
            for (int i = 0; i < row; i++){
                for (int j = 0; j < col; j++){
                    if (mat[i][j] == 0){
                        r[i]=1;
                        c[j]=1;
                    }
                }
            }
            for (int i = 0; i < row; i++){
                for (int j = 0; j < col; j++){
                    if (r[i] == 1||c[j]==1){
                        mat[i][j] = 0;
                    }
                }
            }
            return mat;
        }
    View Code
  • 相关阅读:
    20200824
    Redis
    vs2012快捷键教程
    OpenCV 2.4+ C++ SVM介绍
    隐马尔科夫模型
    hu矩
    手势跟踪
    混合高斯模型GMM
    排序算法
    聚类——混合高斯模型 Gaussian Mixture Model
  • 原文地址:https://www.cnblogs.com/yuguangyuan/p/6121964.html
Copyright © 2011-2022 走看看