`
brandNewUser
  • 浏览: 447030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二维数组对角线打印

阅读更多

 

美团招聘CRM后端Java工程师的题目:

http://www.iteye.com/topic/1134016

 

其中的题目要求如下:

二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: 
4*4二维数组 

Java代码   收藏代码
  1. 1 2 3 4 }  
  2. 5 6 7 8 }  
  3. 9 10 11 12 }  
  4. {13 14 15 16 }  


打印顺序 

Java代码   收藏代码
  1. 4  
  2. 3 8  
  3. 2 7 12  
  4. 1 6 11 16  
  5. 5 10 15  
  6. 9 14  
  7. 13  


要求半个小时内写出可完整运行的代码。 

 

由于本人算法也不太好,找出其中的大概规律如下,以(i,j)作为坐标轴打印结果:

(0,3)
(0,2)(1,3)
(0,1)(1,2)(2,3)
(0,0)(1,1)(2,2)(3,3)
(1,0)(2,1)(3,2)
(2,0)(3,1)
(3,0)

 

于是大致分析出其中的规律,写出以下算法程序:

package com.clamaa.algorithm.simple.interview;

/**
 * @author clamaa
 * @date 14-6-6.
 */
public class MeituanTitle {

    private static final int[][] DATA = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};

    public static void main(String[] args) {
        int n = DATA.length;
        int iStart = 0;
        int jStart = n - 1;

        while (iStart != n) {
            for (int i = iStart, j = jStart; i <= n - 1 && j <= n - 1; i++, j++) {
                System.out.print(DATA[i][j]);
                System.out.print(" ");
            }
            if (jStart > 0) {
                jStart--;
            } else {
                iStart++;
            }
            System.out.println();
        }

    }
}

 

第一层循环中,设置矩阵输出的起始坐标,起始坐标的基本规律是,列index如果不为0,下一行中列index--;列index为0,下一行中行index++。

第二层循环中,对于起始的坐标,在没有到达最后一列时,坐标的行列index均++。

 

运行后结果打印出来的结果符合预期,不知道是否超出了30分钟蠢话

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

 

 

分享到:
评论

相关推荐

    java实现二维数组转置

    用java实现二维数组的转置,1.输入想要创建的数组的维数M;2.分别输入M行数组元素;3.打印数组;4.数组转置;5.打印转置后的数组

    二维数组数据结果课程设计

    含word文档,运行结果,c++源代码。项目功能包括输入一个二维数组A,自定义数组A的行数和列数;读入数组下标,求出数组...当数组的行数和列数相等(m=n)时,分别求两条对角线上的数据元素之和,否则打印出m!=n的信息。

    python 实现矩阵按对角线打印

    将一个矩阵(二维数组)按对角线向右进行打印。(搜了一下发现好像是美团某次面试要求半小时手撕的题) Example: Input: [ [1,2,3,4], [5,1,2,3], [9,5,1,2] ] Output: [[4], [3, 3], [2, 2, 2], [1, 1, 1], [5, 5],...

    打印输出魔方(它的每一行、每一列和对角线之和均相等)

    1、它的每一行、每一列和对角线之和均相等; 2、输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数);例如,当n=3时,魔方阵为: 8 1 6  3 5 7  4 9 2 魔方阵中各数排列规律为: ⑴、将“1”...

    leetcode中国-LeetCode-Go:力码围棋

    对角线遍历 Y Y Y 旋转图像 Y Y Y 有效的数独 Y Y Y 转置矩阵 Y Y Y 零矩阵 Y Y Y 剑指 Offer 题目名称 goldhadis Toetoise FlashOpen-Go 剑指 Offer 03. 数组中重复的数字 Y Y Y 剑指 Offer 04. 二维数组中的查找 Y...

    dd.rar_4 3 2 1

    打印出以下的杨辉三角形(要求打印出10行)...算法提示:设一个二维数组:a[11][11],则杨辉三角形有如下特点: A、数组的第一列和对角线元素值均为1; B、其他各元素为: a[i][j]=a[i-1][j-1]+a[i-1][j] 保存为1.cpp。

    基于C语言实现的三子棋小游戏

    目标是通过将自己的符号连成一条线(水平、垂直或对角线),来先于对手获胜。 在基于C语言实现的三子棋小游戏中,我们可以通过以下方式实现: 1. 创建一个3x3的二维数组表示棋盘,每个元素可以是空、X或者O。 2. ...

    c语言经典案例

    实例105 求二维数组对角线之和 136 实例106 模拟比赛打分 137 实例107 矩阵的转置 139 实例108 设计魔方阵 141 实例109 字符升序排列 142 实例110 在指定位置插入字符 144 实例111 删除字符串中的连续字符 146 实例...

    MIS金智打印通

    1、为网格增加画对角线的功能,以满足中国人表格的特点; 2、将Graphics、PrintDocument、Sewing、RectangleF、Height、Draw()重新组织在IDraw里,并在 BillPrinter中增加private void OutObject(IDraw outer)...

    对称矩阵的压缩储存讲解

    一、存储矩阵用一个二维数组即可; 二、什么是对称矩阵: 设一个N*N的方阵A,A中任意元素Aij,当且仅当 Aij == Aji(0 &lt;= i &lt;= N-1&& 0 &lt;= j &lt;= N-1),则矩阵A是对称矩阵。以矩阵的对角线为分隔,分为...

    leetcode2sumc-algo-ds:东西-ds

    这两个最可怕的主题开始,然后讨论一维、二维数组。 图:二叉树二叉搜索树树,二叉树dag矩阵 二叉树:表示:a) 节点和子节点 b) 数组 遍历,序列化 = &gt; a) 前序递归,迭代 b) 中序递归,迭代 c) 后序递归,迭代 d) ...

    上海电机学院C语言实训答案

    (10)编写一个程序实现如下功能:调用名为tj的函数,求一个二维数组中正数、负数的代数和,以及零的个数。 (11)编写一个程序实现如下功能:调用一个名为gm的函数,该函数实现简单的加密。加密方法如下:先定义...

    蓝点被必做的算法经典题java.c/c++

     题目:求一个3*3矩阵对角线元素之和  1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。  【程序26】  题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 ...

    C程序范例宝典(基础代码详解)

    实例031 二维数组行列互换 37 实例032 使用数组统计学生成绩 39 实例033 打印5阶幻方 40 1.6 字符和字符串操作 41 实例034 统计各种字符个数 41 实例035 字符串倒置 43 实例036 字符串替换 44 实例037...

    精华游戏算法整理(经典)

    这一方法把搜索区域简化成了一个二维数组。数组的每一个元素是网格 的一个方块,方块被标记为可通过的和不可通过的。路径被描述为从A到B我们经过的方块的集合。一旦路径被找到,我们的人就从一个方格的中心走向另一...

    LeetCode解题总结

    7.3 在二维排序数组中查找给定值 7.4 在旋转有序数组中查找最小值 7.4.1 数组无重复 7.4.2 数组有重复 7.5 在旋转排序数组中查找指定数字 8. 暴力枚举法 8.1 求集合的子集 8.2 集合的全排列 8.3 在指定树中选择进行...

    c程序设计习题参考(谭浩强三版)习题参考解答

    所谓魔方阵是指这样的方阵(方阵的阶数应为奇数),它的每一行、每一列和对角线之和均相等。 36 7.8找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。 38 7.9有15个数按从小...

    Java范例开发大全 (源程序)

     实例70 求方阵对角线之和 96  实例71 矩阵的加法 97  实例72 矩阵的减法 98  实例73 快递报价单 99  5.3 数组的排序 101  实例74 冒泡排序法 102  实例75 数组递增排序 103  实例76 部分数组递增...

    java范例开发大全(pdf&源码)

    实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 矩阵的减法 98 实例73 快递报价单 99 5.3 数组的排序 101 实例74 冒泡排序法 102 实例75 数组递增排序 103 实例76 部分数组递增排序 103 实例77 选择排序法...

    java范例开发大全源代码

     实例70 求方阵对角线之和 96  实例71 矩阵的加法 97  实例72 矩阵的减法 98  实例73 快递报价单 99  5.3 数组的排序 101  实例74 冒泡排序法 102  实例75 数组递增排序 103  实例76 部分数组...

Global site tag (gtag.js) - Google Analytics