Leetcode 题解-59题
- 题目:
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
- 思路主要参考了代码随想录,自己复现了一遍
思路: 为保持循环不变量,循环中均采用左包右闭的结构即【)。
1 loop记录可以循环次数,n/2即为填充的圈数
2 mid记录中间值,当为奇数时,最后需要给mid额外赋值
3 startx记录纵向填充的起始位置
4 starty记录横向填充的起始位置
5 off记录填充循环中的减少量
6 循环从左到右一个个填充,再从下到上,再从右到左,再从下到上完成一圈;具体看代码注解!
class Solution {public int[][] generateMatrix(int n) {int[][] res = new int[n][n];int startx = 0;int starty = 0;int mid = n / 2;int loop = n / 2;int count = 1;int off = 1;int i, j;while (loop > 0) {i = startx;j = starty;for (; j < starty + n - off; j++) { //从左往右,填充(starty+n-off)次 res[startx][j] = count++;}for (; i < startx + n - off; i++) { //从上往下,填充(startx+n-x)次res[i][j] = count++ ;}for (; j > starty; j--) { //从右往左,填充(j-starty)次res[i][j] = count++;}for (; i > startx; i--) { //从下往上,填充(i-startx)次res[i][j] = count++;}loop --; //圈数减一startx ++;starty ++;off += 2; //每填充完一圈,单列填充减少2次!}if (n % 2 == 1) { //奇数额外填充数字res [mid][mid] = count;}return res; }
}
Leetcode 题解-59题相关推荐
- leetcode 题解 (500-1000题,持续更新,part 2)
part1(1-500), part3(1000-*) 502. IPO 题意:给定k,w,profits数组和capital数组.k表示最多可完成的任务数.w是初始资本.profits是各个任务的收 ...
- 螺旋方阵(Leetcode第59题)
问题描述:螺旋矩阵 #include <stdio.h> #include <memory.h> int main(){int n;scanf("%d",& ...
- 【LeetCode第59题】长舒一口气,终于学会了这苦涩难懂的 螺旋矩阵II
- LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述
LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- 【Leetcode】 刷题之路1(python)
leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...
- PHP版Leetcode题解开始随缘更新
2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...
- [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]
[剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...
- 设计链表(Leetcode第707题)
此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 题目描述: 设计链表的实现 ...
最新文章
- 原创:去繁存简,回归本源:微信小程序公开课信息分析《一》
- 微博鸿蒙测试版,不久前华为宣布,将会在6月2日举... - @姬永锋 的微博精选 - 微博国际站...
- 【CVPR2020-中科院计算所】多模态GNN:在视觉信息和场景文字上联合推理
- 据说电脑上可以刷朋友圈啦!又多了个上班摸鱼的途径?
- python正则表达式模块_Python正则表达式函数模块
- win7系统下升级IE11
- Nginx中gzip_static使用测试
- servlet版本及容器和Java版本
- 甲醛、苯、甲苯、二甲苯对人体健康的危害
- docker 导出堆栈信息.hprof_JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用...
- Mysql 5.6 在性能、可伸缩性、可用性方面的新突破二
- android手机速度太慢,如果我的Android手机速度变慢该怎么办?加快手机速度的五种方法...
- python 大数据入门教程
- 《转》《七年之前与七年之后》
- html微博系统前端论文,微博平台设计与实现(毕业论文).doc
- local variable ‘x‘ referenced before assignment错误
- 详解FPGA实现8b10b编码原理(含VHDL及verilog源码)
- 一文带你看懂微信小程序费率怎么收
- 【毒鸡汤】英译毒鸡汤——人生已经如此艰难,何不落井下石
- 中华上下五千年演变图