当前位置:网站首页>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();
}
}
边栏推荐
- JS proxy mode
- Graffiti smart brings a variety of heavy smart lighting solutions to the 2022 American International Lighting Exhibition
- How to standardize data center infrastructure management process
- Network of test and development - Common Service Protocols
- Programming questions (continuously updated)
- Distributed | how to make "secret calls" with dble
- 解决Deprecated: Methods with the same name as their class will not be constructors in报错方案
- Internet of things? Come and see Arduino on the cloud
- 涂鸦智能携多款重磅智能照明解决方案,亮相2022美国国际照明展
- 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
猜你喜欢

Using pandas to read SQL server data table

SVG+js拖拽滑块圆形进度条

Use of vim

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

Phpstrom code formatting settings

TP5 using post to receive array data times variable type error: solution to array error

411-栈和队列(20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值、239. 滑动窗口最大值、347. 前 K 个高频元素)

How large and medium-sized enterprises build their own monitoring system

Programming questions (continuously updated)

Troubleshooting steps for Oracle pool connection request timeout
随机推荐
canvas掉落的小球重力js特效动画
学习整理在php中使用KindEditor富文本编辑器
js单例模式
学习使用php实现无限极评论和无限极转二级评论解决方案
canvas 绘制图片
物联网?快来看 Arduino 上云啦
为什么 JSX 语法这么香?
1.项目环境搭建
二叉樹第一部分
Wechat applet learning to achieve list rendering and conditional rendering
SQL sever试题求最晚入职日期
416 binary tree (first, middle and last order traversal iteration method)
Which of the top ten securities companies has the lowest Commission and is the safest and most reliable? Do you know anything
Engine localization adaptation & Reconstruction notes
2.登陆退出功能开发
web网站开发,图片懒加载
p5.js实现的炫酷交互式动画js特效
上升的气泡canvas破碎动画js特效
利用pandas读取SQL Sever数据表
解决Deprecated: Methods with the same name as their class will not be constructors in报错方案
Entrée:nums = [2,7,11,15], target = 9