首页 > 编程语言 >【算法题】二维数组打印

【算法题】二维数组打印

时间:2023-05-21 21:25:16浏览次数:58  
标签:arr int 算法 ++ 二维 vector vec 数组

链接:https://www.nowcoder.com/questionTerminal/6fadc1dac83a443c9434f350a5803b51

有一个二维数组 (n*n) ,写程序实现从右上角到左下角沿主对角线方向打印。(注:主对角线方向为从左上角指向右下角这一斜线的方向)

给定一个二位数组 arr 及题目中的参数 n ,请返回结果数组。   数据范围: 1≤n≤300 

输入

[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4

输出

[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]

题解:

class Printer {
  public:
    vector<int> arrayPrint(vector<vector<int> > arr, int n) {
        // write code here
        vector<int> vec;
        for (int k = 0; k < n + n - 1; k++) {
            if ( k < n - 1) {
                int i = 0;
                int j = n - 1 - k;
                while ( i < n && j < n) {
                    vec.push_back(arr[i++][j++]);
                }
            } else {
                int i = k - n + 1;
                int j = 0;
                while ( i < n && j < n) {
                    vec.push_back(arr[i++][j++]);
                }
            }
        }
        return vec;
    }
};

标签:arr,int,算法,++,二维,vector,vec,数组
From: https://www.cnblogs.com/GavinGYM/p/17419180.html

相关文章

  • 【算法题】骆驼命名法
    题目链接:https://www.nowcoder.com/questionTerminal/aed1c7bbc2604e7c9661a2348b0541b8?answerType=1&f=discussion从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:除......
  • 《数据结构与算法》之数据的顺存储
    导言:数据结构中,对一些数据序列我们使用的是顺序的方式存储,比较常见的有数组,链表,这些都是最基本的顺序存储的结构,我们会用几个简单的例子来描述顺序存储的方式和演变我们知道顺序存储中有链表,有链表我们就必须知道指针,所以我们先复习一下指针,再来看顺序存储一.指针在C语言中,我......
  • NOI / 1.8编程基础之多维数组 8:肿瘤面积
    描述在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。输入只有一个测试样例。第一行有一......
  • 算法学习记录(模拟枚举贪心题单):[NOIP2007]字符串的展开(未AC,明天找bug)
    题目链接https://ac.nowcoder.com/acm/contest/20960/1001解题思路很简单的模拟题,以后写模拟要先分两大类,元素在某个集合中存不存在的问题,再细分。未AC代码#include<iostream>#include<string>usingnamespacestd;//碰到'-'的展开条件:// 1.减号两侧同为小写字母......
  • 取名算法之用JAVA实现姓名测试
    一文中我谈到了名字的重要性。 作为易学高手的我(大师♂罗莊)对告诉各位码农如何制作取名系统 负有不可推卸的责任。 本次课程没有什么难度,就是根据名字笔画来计算天地人三才格 笔画的五行算法已经在上一讲说过,就是去十位数,个位来判断五行 取名算法之用JAVA实现汉字五......
  • 字符串与字符数组
    字符数组的定义chararray[100];字符串的初始化chararray[100]={'a','b','c','d'};chararrsy[100]="abcd";chararrsy[100]={0};chararrsy[]="abcd";/*字符类型char多个char类型组成的就是字符串字符使用单引号''......
  • 2.5 数组分配与访问
    基本原则对于数据类型T和整型常数N,声明如下:TA[N];起始位置表示为xa。这个声明有两个效果。首先,它在内存中分配一个L·N字节的连续区域,这里L是数据类型T的大小(单位为字节)。其次,它引入了标识符A,可以用A来作为指向数组开头的指针,这个指针的值就是xa。可以用0~N-1的整数索引来访......
  • 2.索引数组和关联数组,求随机数,递归调用
    总结索引数组和关联数组,字符串处理,高级变量使用及示例。数组1.数组介绍变量:存储单个元素的内存空间数组;存储多个元素的连续的内存空间,相当于多个变量的集合。数组名和索引索引的编号从0开始,属于数组索引索引支持自定义的格式,而不仅是数值格式,即为关联索引。Bash的数组支持稀疏格......
  • 高精度算法
    先来看一下每个数据类型可表示的数据范围当我们要表示的数很长时,无法用数据类型表示,可以用数组存储单精度:能用一个内置类型存储的整数高精度:不能用内置类型存储的大整数,通常用数组存储每一个数位建议使用小端存储(个位放在最前面)(原因:大端存储虽然看似更直观,但是当处理进位时就会遇到......
  • #球钟算法题解以及代码完成
    球钟问题描述:球钟是一个利用球的移动来记录时间的简单装置。它有三个可以容纳若干个球的指示器:分钟指示器,五分钟指示器,小时指示器。若分钟指示器中有2个球,5分钟指示器中有6个球,小时指示器中有5个球,则时间为5:32。       工作原理:每过一分钟,球钟就会从球队列的队首......