当前位置:网站首页>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();
}
}
边栏推荐
- 413-二叉树基础
- 1.项目环境搭建
- tf.errors
- oracle池式连接请求超时问题排查步骤
- TP5 using post to receive array data times variable type error: solution to array error
- The great charm of cookies
- What are the characteristics of EDI local deployment and cloud hosting solutions?
- 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
- Why is JSX syntax so popular?
- numpy.logical_and()
猜你喜欢

uniapp开发微信小程序,显示地图功能,且点击后打开高德或腾讯地图。

Basic operations on binary tree

Machine learning perceptron and k-nearest neighbor

Jcim | AI based protein structure prediction in drug discovery: impacts and challenges

Groovy obtains Jenkins credentials through withcredentials

Arbre binaire partie 1

解决Deprecated: Methods with the same name as their class will not be constructors in报错方案

Getting user information for applet learning (getuserprofile and getUserInfo)

简单的价格表样式代码

Phpstrom code formatting settings
随机推荐
413-二叉树基础
2021-08-17
tf.errors
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
PostgreSQL DBA quick start - source compilation and installation
卷妹带你学jdbc---2天冲刺Day1
时尚的弹出模态登录注册窗口
Can the long-term financial products you buy be shortened?
Impdp leading schema message ora-31625 exception handling
H5网页如何在微信中自定义分享链接
Safety and food security for teachers and students of the trapped Yingxi middle school
Machine learning - principal component analysis (PCA)
Go language development environment setup +goland configuration under the latest Windows
Which of the top ten securities companies has the lowest Commission and is the safest and most reliable? Do you know anything
Binary tree part I
411 stack and queue (20. valid parentheses, 1047. delete all adjacent duplicates in the string, 150. inverse Polish expression evaluation, 239. sliding window maximum, 347. the first k high-frequency
大中型企业如何构建自己的监控体系
1.项目环境搭建
Use of vim
414-二叉树的递归遍历
Entrée:nums = [2,7,11,15], target = 9