Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Duyệt chéo ma trận (Diagonal Traverse) trong C++

Cho ma trận M x N, trả về các phần tử theo thứ tự chéo (zigzag).

Ví dụ: [[1,2,3],[4,5,6],[7,8,9]] → [1,2,4,7,5,3,6,8,9].

Thuật toán

  1. Duyệt các đường chéo bắt đầu từ cột 0 (hàng 0..M-1) và hàng cuối (cột 1..N-1).
  2. Mỗi đường chéo thu thập phần tử, đảo ngược luân phiên (biến down).

Mã nguồn C++

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    vector findDiagonalOrder(vector>& matrix) {
        vector ret;
        int n = matrix.size();
        int m = n ? matrix[0].size() : 0;
        bool down = false;
        for (int i=0; i temp;
            while (x>=0 && y temp;
            while (x>=0 && y

Đầu vào / Đầu ra

Input: [[1,2,3],[4,5,6],[7,8,9]]

Output: [1,2,4,7,5,3,6,8,9]