【算法】给你一个数字算出螺旋矩阵,要不要来试一试?

简介: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

在这里插入图片描述

算法螺旋矩阵题目描述

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
在这里插入图片描述

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

1 <= n <= 20

题目难度:中等难度
题目类型:用到数组,矩阵。

java解题代码参考

public class GenerateMatrix {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        if (n == 0) {
            return res;
        }
        int left = 0;
        int right = n - 1;
        int up = 0;
        int down = n - 1;
        int i = 1;
        while (i <= n * n) {
            for (int col = left; col <= right; col++) {
                res[up][col] = i;
                i++;
            }
            up++;
            if (i <= n * n) {
                for (int j = up; j <= down; j++) {
                    res[j][right] = i;
                    i++;
                }
                right--;
            }
            if (i <= n * n) {
                for (int j = right; j >= left; j--) {
                    res[down][j] = i;
                    i++;
                }
                down--;
            }
            if (i <= n * n) {
                for (int j = down; j >= up; j--) {
                    res[j][left] = i;
                    i++;
                }
                left++;
            }
        }
        return res;
    }
    public static void main(String[] args) {
        GenerateMatrix a = new GenerateMatrix();
        a.generateMatrix(3);
    }
}

算法题目《微生物增殖》描述

在这里插入图片描述

假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。

以下程序实现了这一功能,请你补全空白处内容:
提示:
分析可知,Y分别会在0.5,1.5,2.5······时被吃,所以,把60分钟分成120份,则在除以2余数为1时,Y的数目减少X个

#include <iostream>
using namespace std;
int main()
{
    int x = 10, y = 90;
    for (int i = 1; i <= 120; i++)
    {
        ________________;
    }
    cout << y << endl;
}

解答代码如下

if (i % 2 == 1)
    y -= x;
if (i % 4 == 0)
    y *= 2;
if (i % 6 == 0)
    x *= 2;

算法题目是不是很有意思。。。

  • 学习算法要知道的几个常识:

在这里插入图片描述

持之以恒的去学习,没有什么是学不会的

相关文章
|
算法 数据处理 C语言
这么好用的二进制转十进制教程,你不会还不知道吧?
这么好用的二进制转十进制教程,你不会还不知道吧?
|
存储 小程序 前端开发
深入理解微信授权登录流程、用户信息获取和Emoji的存储
深入理解微信授权登录流程、用户信息获取和Emoji的存储
635 0
|
数据采集 数据挖掘 数据处理
数据清洗的主要步骤包括**理解数据、处理重复值、处理空缺值、处理异常值、数据标准化和数据收集
【4月更文挑战第3天】数据清洗的主要步骤包括**理解数据、处理重复值、处理空缺值、处理异常值、数据标准化和数据收集
912 2
ENVI:如何自定义beijing54、西安80、国家2000坐标系
ENVI:如何自定义beijing54、西安80、国家2000坐标系
1287 0
|
存储 数据处理 Apache
Flink报错问题之Flink报错AccessKeyId invalid or expire如何解决
Flink报错通常是指在使用Apache Flink进行实时数据处理时遇到的错误和异常情况;本合集致力于收集Flink运行中的报错信息和解决策略,以便开发者及时排查和修复问题,优化Flink作业的稳定性。
|
缓存 NoSQL 大数据
4款.NET开源的Redis客户端驱动库
4款.NET开源的Redis客户端驱动库
338 0
|
存储 安全 算法
隐语小课|一种基于PCG的半诚实PSI协议
隐语小课|一种基于PCG的半诚实PSI协议
1367 0
隐语小课|一种基于PCG的半诚实PSI协议
|
弹性计算 关系型数据库 数据库
阿里云优惠券领取、使用、常见问题解答(2023年更新)
我们购买阿里云服务器或者其他阿里云产品的时候,在支付订单的时候会看到一个优惠券的选项,如果我们账户有领取优惠券,这里是可以选择使用优惠券直接抵扣的,因此,领取和使用优惠券是我们节约购买阿里云产品成本的一个很重要的优惠方式,关于阿里云优惠券领取、使用、常见问题的解答如下下文所示(2023年更新)。
1653 0
阿里云优惠券领取、使用、常见问题解答(2023年更新)
|
自然语言处理 算法 搜索推荐
TF-IDF、TextRank关键字抽取排序算法
TF-IDF称为词频逆文本,结果严重依赖文本分词之后的效果。其公式又可以分成词频(Term Frequency,TF)的计算和逆文档概率(IDF)的计算。
426 0
|
SQL 关系型数据库 MySQL
xtrabackup备份MySQL超时的解决办法
xtrabackup备份MySQL时,可能会出现拿不到锁而超时失败的现象,这里说明解决办法。
561 0

热门文章

最新文章