3446. 按对角线进行矩阵排序

3446. 按对角线进行矩阵排序


题目链接:3446. 按对角线进行矩阵排序

代码如下:

cpp 复制代码
class Solution {
public:
	vector<vector<int>> sortMatrix(vector<vector<int>>& grid) {
		int m = grid.size(), n = grid[0].size();
		//第一排在右上,最后一排在右下
		//每排从左上到右下
		//令k=i-j+n,那么右上角k=1,左下角k=m+n-1
		for (int k = 1;k < m + n;k++) {
			//核心:计算j的最大值和最小值
			int min_j = max(n - k, 0);//i=0的时候,j=n-k,但不能是负数
			int max_j = min(m + n - 1 - k, n - 1);//i=m-1的时候,j=m+n-1-k,但不能超过n-1
			vector<int> a;
			for (int j = min_j;j <= max_j;j++) {
				a.push_back(grid[k + j - n][j]);//根据k的
			}
			if (min_j > 0) {
				ranges::sort(a);
			}
			else {
				ranges::sort(a, greater<int>());
			}
			for (int j = min_j;j <= max_j;j++) {
				grid[k + j - n][j] = a[j - min_j];
			}
		}
		return grid;
	}
};
相关推荐
QT 小鲜肉18 分钟前
【QT/C++】Qt定时器QTimer类的实现方法详解(超详细)
开发语言·数据库·c++·笔记·qt·学习
WBluuue31 分钟前
数据结构与算法:树上倍增与LCA
数据结构·c++·算法
呆瑜nuage1 小时前
C++之红黑树
c++
亮剑20182 小时前
第2节:程序逻辑与控制流——让程序“思考”
开发语言·c++·人工智能
敲代码的瓦龙2 小时前
操作系统?进程!!!
linux·c++·操作系统
TiAmo zhang2 小时前
现代C++的AI革命:C++20/C++23核心特性解析与实战应用
c++·人工智能·c++20
z187461030033 小时前
list(带头双向循环链表)
数据结构·c++·链表
来荔枝一大筐4 小时前
C++ LeetCode 力扣刷题 541. 反转字符串 II
c++·算法·leetcode
报错小能手4 小时前
C++笔记——STL list
c++·笔记
T.Ree.4 小时前
cpp_list
开发语言·数据结构·c++·list