public class Solution {
public int[] FindDiagonalOrder(int[,] matrix) {
var row = matrix.GetLength();
var col = matrix.GetLength(); var upBound = row - + col - ; var ary = new int[row * col]; int i = ;
int j = ; var index = ; if (row == )
{
for (int m = ; m < col; m++)
{
ary[index++] = matrix[, m];
}
return ary;
}
if (col == )
{
for (int m = ; m < row; m++)
{
ary[index++] = matrix[m, ];
}
return ary;
} var direction = true;// for (int k = ; k <= upBound; k++)//对角线上的i,j之和
{
if (i == && j == )
{
ary[index++] = matrix[i, j];
j = ;
continue;
}
//结束点
if (i == row - && j == col - )
{
ary[index++] = matrix[i, j];
break;
}
var EndJ = Math.Min(i, col - );//
var EndI = Math.Min(j, row - );//
while (i + j == k)
{
ary[index++] = matrix[i, j];
if ((direction && (j == || i == row - )) || (!direction && (i == || j == col - )))
{
if (direction)
{
i++;
if (i > row - )
{
i = row - ;
j++;
if (j > col - )
{
j = col - ;
}
}
}
else
{
j++;
if (j > col - )
{
j = col - ;
i++;
if (i > row - )
{
i = row - ;
}
}
} direction = !direction;
continue;
}
if (direction)
{
i++;
if (i > row - )
{
i = row - ;
}
j--;
if (j < )
{
j = ;
}
}
else
{
j++;
if (j > col - )
{
j = col - ;
}
i--;
if (i < )
{
i = ;
}
} }
}
return ary;
}
}

https://leetcode.com/problems/diagonal-traverse/#/description

leetcode498的更多相关文章

  1. [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse

    Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ...

  2. LeetCode498 对角线遍历

    给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], ...

随机推荐

  1. erlang开发环境配置

    第一步  从源码安装erlang git clone https://github.com/erlang/otp 目前最新版本为17.X cd otp/ ./configer  检查编译环境 sudo ...

  2. [译]缓解BEAST对TLS攻击的方式

    原文链接:https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls 原 ...

  3. test20190305

    上午考试,是 \(SCOI\ 2016\ Day\ 1\) 的题目. 背单词 这题我以前是做过的.Trie树总结. #include<bits/stdc++.h> using namesp ...

  4. linux 下执行python.py 无效解决方案

    python 下写linux执行脚本 单独执行 python /home/xx.py 运行正常,但是在linux下 crotch -l 发现有任务运行: 30 0 * * *  python /hom ...

  5. flask第八篇——url_for【1】

    我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8 from fl ...

  6. exec 和 exec_

    exec_ 是six里面针对py2 , py3 兼容,  而做的重新定义.  和 exec 功能一样. 关键一点是:   exec 是一个语法声明,不是一个函数.  也就是说和if,for一样. ex ...

  7. toxiproxy 安装试用

    备注:    实际上是一个代理工具,但是又不是简单的进行代理(tcp,可以配置策略,toxics 实现延迟,模拟故障,    对于这个大家可能了解的就是netflix 公司的chaos monkey, ...

  8. requireJS多页面应用实例

    本文是requireJS的一些知识点的总结,配上多页面应用中的实例分析. 本案例的目录结构如下: requireJS API的三个主要函数:define(创建模块),require(加载模块),con ...

  9. 抽象工厂模式(abstract)创建型模式

    (一)简单工厂模式? 现在的学习是面向对象面向接口的,但是执行时的操作需要实例化后的对象.随着我们需要的类的增加,我们就需要把这些共同的东西提取出来,放在一个抽象类中,让这些子类来继承抽象类.当我们调 ...

  10. linux保存的设置用户/组ID(set-user-ID)的测试

    直接贴代码和结果 // FileName: id.cpp #include <iostream> #include <unistd.h> using namespace std ...