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
- 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).
- 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]