leetcode1329--将矩阵按对角线排序

devtools/2024/11/9 16:37:50/

1. 题意

对角线排序

2. 题解

2.1 直接模拟

跟螺旋输出数组实际上有点像,这里需要枚举对角线数组的起始值。

class Solution {
public:void sort_dia(int br, int bc, vector<vector<int>> &mat) {vector<int> tmp;int r = mat.size();int c = mat[0].size();int cr = br;int cc = bc; while ( cr < r && cc < c) {tmp.emplace_back( mat[cr][cc] );cr++,cc++;}sort(tmp.begin(), tmp.end());cr = br, cc = bc;int idx = 0;while ( cr < r && cc < c ) {mat[cr][cc] = tmp[idx];cr++,cc++,idx++;}}vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {int r = mat.size();int c = mat[0].size();vector<vector<int>> ans;int cr = r - 1;int cc = 0;while (  cc < c) {if (cr) {sort_dia(cr, cc, mat);cr--;continue;}sort_dia(cr, cc, mat);cc++;}return vector<vector<int>>(mat);}
};

2.2 模拟+确定其实位置关系

同一对角线的位置

i − j = k i-j=k ij=k, k k k为一定值。

所以我们只需要枚举 k k k即可。

class Solution {
public:vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {int r = mat.size();int c = mat[0].size();int br;int bc;vector<int> tmp(max(r,c), 0);// k = br - bc // for ( int k = 1 - c; k < r; ++k) {k >= 0 ? br = k : br = 0;bc = br - k ;int len = min(r - br, c - bc);for (int i = br; i < br + len;++i) {tmp[i - br] = mat[i][i - k];}sort(tmp.begin(), tmp.begin() + len);for (int i = br;i < br + len; ++i) {mat[i][ i - k ] = tmp[i - br];}}return vector<vector<int>>(mat);}
};

3. 参考

0x3f


http://www.ppmy.cn/devtools/29164.html

相关文章

关于SSL加密,您应该知道什么?

SSL加密&#xff0c;全称为安全套接字层加密&#xff0c;是一种网络安全协议&#xff0c;主要用于在网络通信中提供隐私和数据完整性。它通过在客户端和服务器之间建立一个加密的通道&#xff0c;确保数据在传输过程中不被窃取或篡改。随着互联网的普及和电子商务的快速发展&am…

实现多线程并发服务器和多进程并发服务器(Linux网络编程)

多进程并发服务器 实现流程 1. Socket(); 创建 监听套接字 lfd2. Bind() 绑定地址结构 Strcut scokaddr_in addr;3. Listen(); 4. while (1) {cfd Accpet(); 接收客户端连接请求。pid fork();if (pid 0){ 子进程 read(cfd) --- 小写->大写 --write(cfd) close(lf…

树莓派 ubuntu22.04 meta安装 ros2-humble

可直接参考&#xff1a; https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html 设置区域设置 locale # check for UTF-8sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-…

互联网医院系统源码开发实战教学:搭建在线问诊APP

今天&#xff0c;笔者将带领大家进行一次互联网医院系统源码开发的实战教学&#xff0c;让我们一起来探索搭建一个高效便捷的在线问诊平台。 一、需求分析和功能设计 在开始源码开发之前&#xff0c;我们首先需要进行需求分析和功能设计。一般来说&#xff0c;一个完善的在线…

【Vue3】Ref与Reactive

3.1【ref 创建&#xff1a;基本类型的响应式数据】 作用&#xff1a;定义响应式变量。语法&#xff1a;let xxx ref(初始值)。返回值&#xff1a;一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的。注意点&#xff1a; JS中操作数…

抢先体验:MacOS成功安装PHP8.4教程

根据官方消息&#xff0c;PHP 8.4将于2024年11月21日发布。它将通过三个 alpha 版本、三个 beta 版本和六个候选版本进行测试。 这次的重大更新将为PHP带来许多优化和强大的功能。我们很高兴能够引导您完成最有趣的更新升级&#xff0c;这些更改将使我们能够编写更好的代码并构…

Spring 之 MatchingStrategy

在Spring框架的上下文中&#xff0c;MatchingStrategy 特别指代处理URL路径匹配的方法策略。这是Spring MVC中一个关键的概念&#xff0c;用于决定HTTP请求的URL路径应当如何与控制器&#xff08;Controller&#xff09;中的请求映射&#xff08;RequestMapping&#xff09;进行…

Docker构建LNMP部署WordPress

前言 使用容器化技术如 Docker 可以极大地简化应用程序的部署和管理过程&#xff0c;本文将介绍如何利用 Docker 构建 LNMP 环境&#xff0c;并通过部署 WordPress 来展示这一过程。 目录 一、环境准备 1. 项目需求 2. 安装包下载 3. 服务器环境 4. 规划工作目录 5. 创…