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;
	}
};
相关推荐
进击的圆儿2 分钟前
高并发内存池项目开发记录 - 02
开发语言·c++·实战·项目·内存池
YXXY3135 分钟前
二叉树进阶
c++
夜晚中的人海13 分钟前
【C++】使用双指针算法习题
开发语言·c++·算法
怀旧,15 分钟前
【Linux系统编程】3. Linux基本指令(下)
linux·开发语言·c++
艾莉丝努力练剑16 分钟前
【C++STL :stack && queue (三) 】优先级队列的使用以及底层实现
linux·开发语言·数据结构·c++·stl
earthzhang20214 小时前
【1028】字符菱形
c语言·开发语言·数据结构·c++·算法·青少年编程
AA陈超6 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
纵有疾風起7 小时前
C++——类和对象(3)
开发语言·c++·经验分享·开源
承渊政道8 小时前
动态内存管理
c语言·c++·经验分享·c#·visual studio
孤独得猿9 小时前
聊天室项目开发——etcd的安装和使用
linux·服务器·c++·etcd