当前位置:网站首页>Leetcode - 498: traversée diagonale
Leetcode - 498: traversée diagonale
2022-06-24 10:14:00 【Tu es laid et laid.】
Description du sujet
Pour vous donner une taille de m x n La matrice de mat ,S'il vous plaît, dans l'ordre Diagonal,Renvoie tous les éléments de cette matrice dans un tableau.
Exemple
Exemple 1:
Entrée:nums = [2,7,11,15], target = 9
Produits:[0,1]
Explication:Parce que nums[0] + nums[1] == 9 ,Retour [0, 1] .
Exemple 2:
Entrée:mat = [[1,2],[3,4]]
Produits:[1,2,3,4]
Processus de résolution des problèmes
Idées et étapes
(1)m * n Matrice bidimensionnelle de, En tout. m + n - 1 Diagonale, La diagonale adjacente traverse une direction différente;
(2)Que la diagonale soit numérotée de haut en bas comme [0,m + n − 2].Quand i Même nombre, La direction de traversée est de gauche en bas à droite en haut;Quand i Nombre impair,La direction de traversée est de droite en bas à gauche;
(3)Quand i Les diagonales sont parcourues du bas gauche vers le haut à droite, C'est - à - dire: i Même nombre, Chaque index de ligne moins 1, Index des colonnes plus 1, Jusqu'au bord de la matrice;
Quand i < m Heure, Le point de départ de la traversée diagonale est (i, 0);
Quand i ≥ m Heure,Le point de départ de la traversée diagonale est (m − 1, i − m + 1);
(4)Quand i Les diagonales sont parcourues de droite en bas à gauche , C'est - à - dire: i Nombre impair, Chaque index de ligne plus 1, Index des colonnes moins 1, Jusqu'au bord de la matrice;
Quand i < n Heure, Le point de départ de la traversée diagonale est (0, i);
Quand i ≥ n Heure, Le point de départ de la traversée diagonale est (i − n + 1, n − 1);
Affichage du Code
public class FindDiagonalOrder {
/** * Réponse officielle: * m * n Matrice bidimensionnelle de, En tout. m + n - 1 Diagonale, La diagonale adjacente traverse une direction différente * Que la diagonale soit numérotée de haut en bas comme [0,m + n − 2] * Quand i Même nombre, La direction de traversée est de gauche en bas à droite en haut; * Quand i Nombre impair,La direction de traversée est de droite en bas à gauche; * * Quand i Les diagonales sont parcourues du bas gauche vers le haut à droite, C'est - à - dire: i Même nombre, Chaque index de ligne moins 1, Index des colonnes plus 1, Jusqu'au bord de la matrice; * Quand i < m Heure, Le point de départ de la traversée diagonale est (i, 0); * Quand i ≥ m Heure,Le point de départ de la traversée diagonale est (m − 1, i − m + 1); * * Quand i Les diagonales sont parcourues de droite en bas à gauche , C'est - à - dire: i Nombre impair, Chaque index de ligne plus 1, Index des colonnes moins 1, Jusqu'au bord de la matrice; * Quand i < n Heure, Le point de départ de la traversée diagonale est (0, i); * Quand i ≥ n Heure, Le point de départ de la traversée diagonale est (i − n + 1, n − 1); **/
public int[] findDiagonalOrder(int[][] mat) {
// D'accord
int m = mat.length;
// Colonnes
int n = mat[0].length;
int[] result = new int[m * n];
int index = 0;
for (int i = 0; i < m + n - 1; i++) {
if (i % 2 == 0) {
// Nombre pair de diagonales
int row = 0;
int line = 0;
if (i < m) {
row = i;
}
if (i >= m) {
row = m - 1;
line = i - m + 1;
}
while (row >= 0 && line < n) {
result[index] = mat[row][line];
row--;
line++;
index++;
}
} else {
// Nombre impair de diagonales
int row = 0;
int line = 0;
if (i < n) {
line = i;
}
if (i >= n) {
row = i - n + 1;
line = n - 1;
}
while (row < m && line >= 0) {
result[index] = mat[row][line];
row++;
line--;
index++;
}
}
}
return result;
}
public static void main(String[] args) {
int[][] mat = {
{
1,2,3},
{
4,5,6},
{
7,8,9}};
int[] result = new FindDiagonalOrder().findDiagonalOrder(mat);
for (int i = 0; i < result.length; i++) {
System.out.printf("%2d", result[i]);
}
System.out.println();
}
}
边栏推荐
- 4.分类管理业务开发
- leetCode-1089: 复写零
- SQL sever基本数据类型详解
- SQL Sever中的窗口函数row_number()rank()dense_rank()
- indexedDB本地存储,首页优化
- Symbol. Iterator iterator
- 416 binary tree (first, middle and last order traversal iteration method)
- Get the QR code of wechat applet with parameters - and share the source code of modifying the QR code logo
- 小程序学习之获取用户信息(getUserProfile and getUserInfo)
- CVPR 2022 oral | NVIDIA proposes an efficient visual transformer network a-vit with adaptive token. The calculation of unimportant tokens can be stopped in advance
猜你喜欢

Use of vim

canvas掉落的小球重力js特效动画

Record the range of data that MySQL update will lock

SQL Server AVG function rounding

YOLOv6:又快又准的目标检测框架开源啦

GeoGebra 实例 时钟

Cookie encryption 4 RPC method determines cookie encryption

Yolov6: the fast and accurate target detection framework is open source

整理接口性能优化技巧,干掉慢代码

2021-08-17
随机推荐
Get the QR code of wechat applet with parameters - and share the source code of modifying the QR code logo
Juul, the American e-cigarette giant, suffered a disaster, and all products were forced off the shelves
413-二叉树基础
Use of vim
微信小程序rich-text图片宽高自适应的方法介绍(rich-text富文本)
Impdp leading schema message ora-31625 exception handling
2021-08-17
Mise en œuvre du rendu de liste et du rendu conditionnel pour l'apprentissage des applets Wechat.
学习使用php对字符串中的特殊符号进行过滤的方法
美国电子烟巨头 Juul 遭遇灭顶之灾,所有产品强制下架
保健品一物一码防窜货营销软件开发
Thinkphp5 clear the cache cache, temp cache and log cache under runtime
canvas管道动画js特效
Canvas draw picture
大中型企业如何构建自己的监控体系
MySQL data advanced
uniapp实现点击拨打电话功能
Top issue tpami 2022! Behavior recognition based on different data modes: a recent review
SQL Server AVG function rounding
有关二叉树 的基本操作
Entrée:nums = [2,7,11,15], target = 9