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;
	}
};
相关推荐
2301_8166512212 分钟前
C++中的享元模式变体
开发语言·c++·算法
m0_5832031315 分钟前
C++中的访问者模式变体
开发语言·c++·算法
浅念-22 分钟前
C ++ 智能指针
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
不染尘.23 分钟前
最小生成树算法
开发语言·数据结构·c++·算法·图论
NX-二次开发38 分钟前
UG CAM API 获取、设置切削层中的切削方式类型方法,如设置仅底面、恒定、临界深度的类型
c++
祝大家百事可乐1 小时前
嵌入式——02 数据结构
c++·c#·硬件工程
Yu_Lijing1 小时前
基于C++的《Head First设计模式》笔记——生成器模式
c++·笔记·设计模式
计算机安禾1 小时前
【C语言程序设计】第36篇:二进制文件的读写
c语言·开发语言·c++·算法·github·visual studio code·visual studio
2301_807367191 小时前
C++代码风格检查工具
开发语言·c++·算法
Morwit1 小时前
*【力扣hot100】 215. 数组中的第K个最大元素
数据结构·c++·算法·leetcode·职场和发展