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

ops/2025/2/10 8:45:56/

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/ops/28812.html

相关文章

5.1 基于 Docker 安装 Zookeeper

概述 Zookeeper 部署有三种方式,单机模式、集群模式、伪集群模式,以下采用 Docker 的方式部署。 注意: 集群为大于等于3个奇数,如 3、5、7,不宜太多,集群机器多了选举和数据同步耗时长,不稳定。 单机模式 docker-compose.yml version: 3.1services:zoo1:image: zook…

【设计模式】之模板方法模式

系列文章目录 【设计模式】之策略模式 【设计模式】之责任链模式 文章目录 系列文章目录 前言 一、什么是模板方法模式 定义 角色 二、为什么要使用模板方法模式 优点 缺点 三、案例 普通案例 模拟Servlet过程案例 总结 前言 今天给大家介绍23种设计模式中的模板方法模式&a…

CAMEL:大型语言模型社会的“心智”探索沟通代理

英文名称: CAMEL: Communicative Agents for “Mind” Exploration of Large Language Model Society 中文名称: CAMEL&#xff1a;大型语言模型社会的“心智”探索沟通代理 链接: https://arxiv.org/pdf/2303.17760.pdf 代码: https://github.com/camel-ai/camel 4.4K Star 作…

小程序SSL证书更新指南

随着网络技术的不断发展&#xff0c;小程序已经成为许多企业和个人进行业务推广和服务提供的重要平台。在享受小程序带来的便利和高效的同时&#xff0c;我们也必须重视其安全性问题。SSL证书作为保障小程序数据传输安全的重要手段&#xff0c;其更新工作不容忽视。本文将为大家…

目标检测发展概述

前言 本篇文章只是简单介绍一下目标检测这一计算机视觉方向的发展历史&#xff0c;因此重点在于介绍而不是完整阐述各个时期的代表算法&#xff0c;只要能够简单了解到目标检测的发展历史那么本文的目的就达到了。 目标检测的任务 从上图不难看出&#xff0c;目标检测是计算机…

ESLint 和 Prettier 各自的作用及区别

ESLint 和 Prettier 各自的作用及区别 什么是 ESLint什么是 Prettiereslint 和 prettier 有哪些区别 什么是 ESLint 官方解释&#xff1a;ESLint 是一个可配置的 JavaScript linter。它可以帮助你发现并修复 JavaScript 代码中的问题。问题可以是任何事情&#xff0c;从潜在的运…

每天学习一个Linux命令之ldconfig

每天学习一个Linux命令之ldconfig 在Linux系统中&#xff0c;我们经常会使用一些命令来管理和配置各种软件和库。其中之一就是ldconfig命令。ldconfig命令用于配置共享库缓存&#xff0c;以便在运行时正确地加载共享库。本文将详细介绍ldconfig命令及其可用选项。 安装和基本…

Python----列表删除

第一题: 描述 牛牛在各大互联网公司投入了简历&#xff0c;公司的名字通过字符串的形式在一行中输入&#xff0c;请用列表记录。现在牛牛已经确定了第一所公司的HR表露了不录用他的态度&#xff0c;请你使用del函数帮助牛牛从列表中删除第一个元素&#xff0c;然后输出列表。…