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;
	}
};
相关推荐
橘子真甜~17 小时前
C/C++ Linux网络编程15 - 网络层IP协议
linux·网络·c++·网络协议·tcp/ip·计算机网络·网络层
asiwxy19 小时前
OpenGL 材质
c++
阿华hhh19 小时前
Linux系统编程(标准io)
linux·开发语言·c++
程序喵大人20 小时前
推荐个 C++ 练习平台
开发语言·c++·工具推荐
fpcc21 小时前
跟我学C++中级篇——std::is_invocable的分析应
c++
Code Slacker1 天前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode
SHERlocked931 天前
摄像头 RTSP 流视频多路实时监控解决方案实践
c++·后端·音视频开发
tang&1 天前
哈希碰撞攻防战:C++闭散列与开散列实现全解析
c++·哈希算法
眠りたいです1 天前
现代C++:C++11并发支持库
开发语言·c++·多线程·c++11·c++并发支持库