leetcode498
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的更多相关文章
- [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ...
- LeetCode498 对角线遍历
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], ...
随机推荐
- erlang开发环境配置
第一步 从源码安装erlang git clone https://github.com/erlang/otp 目前最新版本为17.X cd otp/ ./configer 检查编译环境 sudo ...
- [译]缓解BEAST对TLS攻击的方式
原文链接:https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls 原 ...
- test20190305
上午考试,是 \(SCOI\ 2016\ Day\ 1\) 的题目. 背单词 这题我以前是做过的.Trie树总结. #include<bits/stdc++.h> using namesp ...
- linux 下执行python.py 无效解决方案
python 下写linux执行脚本 单独执行 python /home/xx.py 运行正常,但是在linux下 crotch -l 发现有任务运行: 30 0 * * * python /hom ...
- flask第八篇——url_for【1】
我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8 from fl ...
- exec 和 exec_
exec_ 是six里面针对py2 , py3 兼容, 而做的重新定义. 和 exec 功能一样. 关键一点是: exec 是一个语法声明,不是一个函数. 也就是说和if,for一样. ex ...
- toxiproxy 安装试用
备注: 实际上是一个代理工具,但是又不是简单的进行代理(tcp,可以配置策略,toxics 实现延迟,模拟故障, 对于这个大家可能了解的就是netflix 公司的chaos monkey, ...
- requireJS多页面应用实例
本文是requireJS的一些知识点的总结,配上多页面应用中的实例分析. 本案例的目录结构如下: requireJS API的三个主要函数:define(创建模块),require(加载模块),con ...
- 抽象工厂模式(abstract)创建型模式
(一)简单工厂模式? 现在的学习是面向对象面向接口的,但是执行时的操作需要实例化后的对象.随着我们需要的类的增加,我们就需要把这些共同的东西提取出来,放在一个抽象类中,让这些子类来继承抽象类.当我们调 ...
- linux保存的设置用户/组ID(set-user-ID)的测试
直接贴代码和结果 // FileName: id.cpp #include <iostream> #include <unistd.h> using namespace std ...