当前位置:网站首页>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();
}
}
边栏推荐
- p5.js实现的炫酷交互式动画js特效
- GIS实战应用案例100篇(十四)-ArcGIS属性连接和使用Excel的问题
- SQL Server AVG function rounding
- NVIDIA's CVPR 2022 oral is on fire! 2D images become realistic 3D objects in seconds! Here comes the virtual jazz band!
- 读取csv(tsv)文件出错
- uniapp实现点击拨打电话功能
- uniapp实现禁止video拖拽快进
- 学习使用php实现无限极评论和无限极转二级评论解决方案
- 自定义kindeditor编辑器的工具栏,items即去除不必要的工具栏或者保留部分工具栏
- web网站开发,图片懒加载
猜你喜欢

uniapp实现点击拨打电话功能

植物生长h5动画js特效

Machine learning - principal component analysis (PCA)

利用pandas读取SQL Sever数据表

SQL Server AVG函数取整问题

微信小程序学习之 实现列表渲染和条件渲染.

numpy.linspace()

p5.js实现的炫酷交互式动画js特效

Tutorial (5.0) 08 Fortinet security architecture integration and fortixdr * fortiedr * Fortinet network security expert NSE 5

Juul, the American e-cigarette giant, suffered a disaster, and all products were forced off the shelves
随机推荐
小程序 rich-text中图片点击放大与自适应大小问题
416 binary tree (first, middle and last order traversal iteration method)
Cookie encryption 4 RPC method determines cookie encryption
415 binary tree (144. preorder traversal of binary tree, 145. postorder traversal of binary tree, 94. inorder traversal of binary tree)
Safety and food security for teachers and students of the trapped Yingxi middle school
413 binary tree Foundation
微信小程序rich-text图片宽高自适应的方法介绍(rich-text富文本)
SVG+js拖拽滑块圆形进度条
Error reading CSV (TSV) file
Tutorial (5.0) 08 Fortinet security architecture integration and fortixdr * fortiedr * Fortinet network security expert NSE 5
How large and medium-sized enterprises build their own monitoring system
2022-06-23: given a nonnegative array, select any number to make the maximum cumulative sum a multiple of 7, and return the maximum cumulative sum. N is larger, to the 5th power of 10. From meituan. 3
操作符详解
TP5 using post to receive array data times variable type error: solution to array error
How do novices choose the grade of investment and financial products?
Machine learning perceptron and k-nearest neighbor
时尚的弹出模态登录注册窗口
414-二叉树的递归遍历
Graffiti smart brings a variety of heavy smart lighting solutions to the 2022 American International Lighting Exhibition
SSH Remote Password free login
Entrée:nums = [2,7,11,15], target = 9