59. Spiral Matrix II(待进一步研究)

2023-11-21 03:58

本文主要是介绍59. Spiral Matrix II(待进一步研究),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

四步走:

vector<vector<int>> generateMatrix(int n) {vector<vector<int>> result(n,vector<int>(n));int k = 1;int i = 0;while(k <= n * n){//四个步骤int j = i;while(j < n - i){ //水平赋值,从左到右result[i][j++] = k++;}j = i + 1;while(j < n - i){//垂直赋值,从上到下result[j++][n - i - 1] = k++;}j = n - i - 2;while(j > i){//水平赋值,从右到左result[n - i - 1][j--] = k++;}j = n - i -1;while(j > i){//垂直赋值,从下到上result[j--][i] = k++;}i++;}return result;}

也可以采用定义的4个变量来写,这样更清晰些(注意:此题中注释掉的两个if语句可加可不加,加上更严谨些,但注意对于n*n的矩阵可不加if,但对于m*n的矩阵则需要加上if):

vector<vector<int>> generateMatrix(int n) {vector<vector<int>> result(n,vector<int>(n));int rowStart = 0;int rowEnd = n - 1;int colStart = 0;int colEnd = n -1;int k = 1;while(rowStart <= rowEnd && colStart <= colEnd){//四步走//第一步:水平赋值,从左到右for(int i = colStart; i <= colEnd; i++){result[rowStart][i] = k++;}rowStart++;//第二步,垂直赋值,从上到下for(int i = rowStart; i <= rowEnd; i++){result[i][colEnd] = k++;}colEnd--;//第三步,水平赋值,从右到左for(int i = colEnd; i >= colStart; i--){//if (rowStart <= rowEnd)result[rowEnd][i] = k++;}rowEnd--;//第四步,垂直赋值,从下到上for(int i = rowEnd; i >= rowStart; i--){//if (colStart <= colEnd)result[i][colStart] = k++;}colStart++;}return result;}

更好的算法:

vector<vector<int> > generateMatrix(int n) {int dir = 0;vector< vector<int> > matrix(n, vector<int> (n, 0));int i = 0, j = 0, k = 1;while (k <= n * n) {matrix[i][j] = k++;if (dir == 0){j++;if (j == n || matrix[i][j] != 0) dir = 1, j--, i++;} elseif (dir == 1) {i++;if (i == n || matrix[i][j] != 0) dir = 2, i--, j--;} elseif (dir == 2) {j--;if (j < 0 || matrix[i][j] != 0) dir = 3, j++, i--;} elseif (dir == 3) {i--;if (i < 0 || matrix[i][j] != 0) dir = 0, i++, j++;}}return matrix;}

这篇关于59. Spiral Matrix II(待进一步研究)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/399647

相关文章

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立