leetcode54. 螺旋矩阵(详解)

一:题目

在这里插入图片描述

二:上码

class Solution {
public:/**思路:1.1  2  3  45  6  7  89  10 11 1213 14 15 162.我们模拟顺时针的顺序,那么得分为4步 上面得一行   (1,2,3)左面得一行   (4,8,12)下面得一行   (16,15,14)右面得一行   (13,9,5)可以看到我们在取数字得时候,我们是每次只取出3个,也就是左闭右开那么这只是一圈,我们需要统计出圈数,那么圈数和什么有关呢?圈数 = min(行/2,列/2);3.模拟完圈数我们还应该考虑一个问题,那就是我们应该考虑中间的数1>:当行多列少的时候  列不能为偶数 否则就是完整的圈数2>:当列多 行少的时候   行不能为偶数  否则就是完整的圈数3>:当行==列的时候  中间就剩下一个数.*/vector<int> spiralOrder(vector<vector<int>>& matrix) {int n = matrix.size();//行数int m = matrix[0].size();//列数int loop = min(m/2,n/2);//圈数int border = 1;//边界int startx = 0,starty = 0;int i,j;vector<int> ans;while(loop--) {i = startx;//每圈的起点j = starty;//每圈的起点//最上面的一行 开始为 starty 表示的是我们的行不变 列在变//我们取的是左闭右开  那么我们边界条件是  m - border(其中border随着圈数的增加而增加)for ( ; j < m - border; j++) {ans.push_back(matrix[i][j]);}//最右面的一行 列不变  行在变 (这里的列 j 是拿上个for循环的)for ( ; i < n - border; i++) {ans.push_back(matrix[i][j]);}//最下面的一行 行不变列在变(这里的j 是第一个for循环的j  i 是第二个for循环中的 i)for ( ; j > starty; j--) {ans.push_back(matrix[i][j]);}//最右面的一行 列不变  行在变 (这里的 i 和 j 都是上面for循环的)for ( ; i > startx; i--) {ans.push_back(matrix[i][j]);}startx++;starty++;border++;//边界不一样了 }//处理行数 列数 中存在奇数的情况 就是导致我们的去圈数不完整的情况//当行数比列数要多的时候  列数为奇数的话 那么圈数不完整//当行数比列数要少的时候  行数为奇数的话  那么圈数不完整//当行数 == 列数 且都为奇数的话  那么只处理最中间的数即可//这里我们在处理的时候我们是处理的是 startx 和 starty 因为我们反正我们是 顺时针模拟的//我们的startx 和 starty是一直变化的, 我们的边界的话 是需要左闭右闭的  所以我们 // 减去 border后就又加一了.if (n > m && m % 2 != 0) {//剩下竖着的一列  列不变行在变for ( ; startx < n - border +1; startx++) ans.push_back(matrix[startx][starty]);} else if (n < m && n % 2 != 0) { //剩下横着的一行  行不变列在变for ( ; starty < m - border+1; starty++) ans.push_back(matrix[startx][starty]);} else if (m == n && m % 2 != 0) {//int mid = m/2;ans.push_back(matrix[mid][mid]);}return ans;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习入门笔记(7)—— Multinomial Logistic Regression / Softmax Regression

首先介绍一个非常著名的多分类数据集 MNIST&#xff0c;也就是 0 到 9 的手写数字数据集。每个图像都是 28 * 28&#xff0c;用于Pytorch 数据读取的格式是 NCHW&#xff0c;即 Number、Channel、Height、Weight。 读取图像之后&#xff0c;就能看到一个只有单通道的&#xff0…

[C#.NET 拾遗补漏]09:数据标注与数据校验

数据标注&#xff08;Data Annotation&#xff09;是类或类成员添加上下文信息的一种方式&#xff0c;在 C# 通常用特性&#xff08;Attribute&#xff09;类来描述。它的用途主要可以分为下面这三类&#xff1a;验证 Validation&#xff1a;向数据添加验证规则展现 Display&am…

2023届春招实习拉钩一面凉经

面完就当挂了 老想着其实自己其实还能回答的更好 可回不去了 计网的的ioc七层模型各层的作用 为什么是七层模型而不是两层模型 SpringBoot最核心的注解是什么 Spring中IOC原理以及相关注解 说说对Mysql数据库索引的了解 map有哪些实现 分别讲讲&#xff1f; 项目中数据库…

Pytorch中损失函数 NLLLOSS 和 CROSSENTROPYLOSS 的区别

NLLLOSS 是 negative log likelihood loss 负对数似然损失函数&#xff0c;CROSSENTROPYLOSS 是交叉熵损失函数&#xff0c;它们都是用于多分类任务的损失函数&#xff0c;正如我在笔记中提到的&#xff0c;它们实际上是一样的&#xff0c;在 Pytorch 中这两者的区别就只在于接…

收好这张MySQL导图,全是知识点!

感谢阅读&#xff0c;直接上干货&#xff01;最新整理的MySQL知识点全图&#xff0c;完整系统超3万字。直接跳转文末&#xff0c;下载源文件&#xff01;开源跨平台的.NET Core越来越热门了&#xff0c;腾讯、网易、顺丰等大厂都在招聘&#xff0c;而且都开始明确要求MySQL了&a…

深度学习入门笔记(8)—— Multilayer Perceptron 多层感知器

所谓多层感知器&#xff0c;其实就是具有一个或多个隐藏层&#xff08;hidden layer&#xff09;的全连接前馈神经网络&#xff0c;如图所示&#xff0c;在最重要的求取损失关于权重的偏导数的过程上&#xff0c;跟之前的 Logistic Regression 和 Softmax Regression 一样&…

蓝桥杯-填空题-门牌制作

一&#xff1a;题目 二&#xff1a;代码 #include <iostream> using namespace std; int main() {int nums 2020;int count 0;string str to_string(nums);for(int i 1; i < nums; i) {string str to_string(i);for(auto temp: str) {if(temp 2){count;}}}cout…

.NET Core中间件与依赖注入的一些思考

点击上方蓝字"小黑在哪里"关注我吧1.起源? 为什么会有这篇文章呢? 源于我看了老A的aspnet core 3 框架揭秘[1] 请求管道 篇产生的疑惑?三点疑惑:Singleton服务中注入Scoped服务产生内存泄露?关于中间件的生命周期是Singleton的?怎么避免中间件、Singleton服务中…

深度学习入门笔记(9)—— Regularization to avoid overfitting 用正则化来避免过拟合

在维基百科的词条中&#xff0c;正则化就是让答案变得更简单的&#xff0c;目的是防止过拟合。在分类上可以分为显式正则化&#xff08;对目标函数添加先验、惩罚、约束、成本&#xff09;和隐式正则化&#xff08;所有其他形式的正则化如提前停止、集成学习、Dropout 等&#…

蓝桥杯-填空题-购物单

一&#xff1a;题目 **** 180.90 88折 **** 10.25 65折 **** 56.14 9折 **** 104.65 9折 **** 100.30 88折 **** 297.15 半价 **** 26.75 65折 **** 130.62 半价 **** 240.28 …

C# 中 System.Index 结构体和 Hat 运算符(^)的全新用法

翻译自 John Demetriou 2019年2月17日 的文章 《C# 8 – Introducing Index Struct And A Brand New Usage For The Hat Operator》今天我们要讲的是 Hat 运算符(^)。目前为止&#xff0c;Hat 运算符(^)已经被用作布尔类型的异或运算符&#xff0c;以及字节、整型类型的按位异或…

Lagrange Multipliers 拉格朗日乘数法(含 KKT 条件)

最优化问题通常是指对于给定的某一函数&#xff0c;求其在指定作用域上的全局最小值&#xff0c;一般情况下&#xff0c;最优化问题一般分为三种情况&#xff1a; &#xff08;1&#xff09;无约束条件 对于无约束条件的优化问题中&#xff0c;如果一个函数 f 是凸函数&#…

蓝桥杯-代码-数字三角形

一:题目 二:代码 #include <iostream> #include<vector> using namespace std; int main() {/**思路:1.确定dp数组的定义以及下标的含义dp[i][j] 表示的是一条路径到达下标i和j时&#xff0c;的最大值 2.确定dp数组的状态转移公式我们当前位置的最大值其实是由右上…

ABP VNext从单体切换到微服务

注&#xff1a;此处的微服务只考虑服务部分&#xff0c;不考虑内外层网关、认证等。ABP VNext从单体切换到微服务&#xff0c;提供了相当大的便利性&#xff0c;对于各模块内部不要做任何调整&#xff0c;仅需要调整承载体即可。ABP can help you in that point by offerring a…

dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

在前面几篇博客告诉大家如何部署 GTK 应用&#xff0c;此时的应用是特别弱的&#xff0c;大概只是到拖控件级。尽管和 WinForms 一样也能写出特别强大的应用&#xff0c;但是为了提升一点开发效率&#xff0c;咱开始使用 xaml 神器写界面。本文告诉大家如何在 UOS 国产系统上&a…

赛码-编程题-打字

一:题目 二&#xff1a;上码 #include<bits/stdc.h> using namespace std;int main() {int n;vector<int> v1;cin >> n;for(int i 0; i < n; i) {string str;int count 0;cin >> str;for (int j 0; j < str.size(); j) {int num int(str[j]…

Python 中的 with 语句用法和 Pytorch 中的 with torch.no_grad() 解析

Python 中的 with 语句适用于对资源进行访问的场合&#xff0c;确保不管使用过程中是否发生异常都会执行必要的“清理”操作&#xff08;异常处理&#xff09;&#xff0c;释放资源&#xff0c;比如文件使用后自动关闭&#xff0f;线程中锁的自动获取和释放等。例如下面是文件读…

遍历 Dictionary,你会几种方式?

一&#xff1a;背景 1. 讲故事昨天在 StackOverflow 上看到一个很有趣的问题&#xff0c;说: 你会几种遍历字典的方式&#xff0c;然后跟帖就是各种奇葩的回答&#xff0c;挺有意思&#xff0c;马上就要国庆了&#xff0c;娱乐娱乐吧&#xff0c;说说这种挺无聊的问题?????…

PyTorch 中各种操纵维度的函数比较 view() reshape() squeeze() unsqueeze() flatten()

首先&#xff0c;假设我们有一个三行四列的张量 X&#xff1a; view() 和 reshape() 函数都可以指定并改变张量的维度&#xff0c;它们本质上是相同的&#xff0c;只有两点区别&#xff1a; 1、view() 函数返回的是原始张量的视图&#xff0c;而 reshape() 函数返回的是原始张…

.NET Core 下的 API 网关

网关介绍网关其实就是将我们写好的API全部放在一个统一的地址暴露在公网&#xff0c;提供访问的一个入口。在 .NET Core下可以使用Ocelot来帮助我们很方便的接入API 网关。与之类似的库还有ProxyKit&#xff0c;微软也发布了一个反向代理的库YARP。关于网关的介绍不多说了&…