leecode第五十九题(螺旋矩阵 II)

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        if(n==0)//特殊情况
        {
            vector<vector<int>> empty;
            return empty;
        }

        vector<vector<int>> res;
        for(int i=0;i<n;i++)//要先初始化
        {
            vector<int> zeros;
            for(int j=0;j<n;j++)
                zeros.push_back(0);
            res.push_back(zeros);
        }

        int num=1;
        for(int i=0;i<=(n-1)/2;i++)
        {
            for(int j=i;j<(n-i);j++)//还是分析,第一行
            {
                res[i][j]=num;
                num++;
            }

            for(int j=i+1;j<(n-i);j++)//最后一列
            {
                res[j][n-1-i]=num;
                num++;
            }

            for(int j=n-2-i;j>=i;j--)//最后一行
            {
                res[n-1-i][j]=num;
                num++;
            }

            for(int j=n-2-i;j>i;j--)//第一列
            {
                res[j][i]=num;
                num++;
            }
        }

        return res;
    }
};

分析:

今天散会早,忍不住又做了一道。和上个题异曲同工,但是这里需要初始化一下。

原文地址:https://www.cnblogs.com/CJT-blog/p/10596914.html

时间: 2024-11-01 11:21:35

leecode第五十九题(螺旋矩阵 II)的相关文章

《剑指offer》第五十九题(队列的最大值)

// 面试题59(二):队列的最大值 // 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值.例如, // 如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个 // 滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}, #include <iostream> #include <deque> #include <exception> using namespace std; template&l

【leetcode 简单】 第五十九题 同构字符串

给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一个字符上,但字符可以映射自己本身. 示例 1: 输入: s = "egg", t = "add" 输出: true 示例 2: 输入: s = "foo", t = "bar" 输出: false 示例 3: 输入: s = &q

《剑指offer》第五十九题(滑动窗口的最大值)

// 面试题59(一):滑动窗口的最大值 // 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值.例如, // 如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个 // 滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}, #include <iostream> #include <vector> #include <deque> using namespace std; vector<i

leecode第五十八题(最后一个单词的长度)

class Solution { public: int lengthOfLastWord(string s) { int res=0; int len=s.size(); if(len==0) return res; int index=len-1; while(s[index]==' ')//应对“a__”情况 index--; for(int i=index;i>=0;i--) { if(s[i]!=' ') res++; else break; } return res; } }; 分析

《剑指offer》第五十九题I:滑动窗口的最大值

// 面试题59(一):滑动窗口的最大值 // 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值.例如, // 如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个 // 滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}, #include <cstdio> #include <vector> #include <deque> using namespace std; vector<int

《剑指offer》第五十九题II:队列的最大值

// 面试题59(二):队列的最大值 // 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值.例如, // 如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个 // 滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}, #include <cstdio> #include <deque> #include <exception> using namespace std; template<

2014 HDU多校弟五场J题 【矩阵乘积】

题意很简单,就是两个大矩阵相乘,然后求乘积. 用 Strassen算法 的话,当N的规模达到100左右就会StackOverFlow了 况且输入的数据范围可达到800,如果变量还不用全局变量的话连内存开辟都开不出来 1 #pragma comment(linker, "/STACK:16777216") 2 #include <iostream> 3 #include <stdio.h> 4 #define ll long long 5 using namesp

经典算法题每日演练——第十九题 双端队列

原文:经典算法题每日演练--第十九题 双端队列 话说大学的时候老师说妹子比工作重要~,工作可以再换,妹子这个...所以...这两个月也就一直忙着Fall in love,嗨,慢慢调整心态吧, 这篇就选一个简单的数据结构聊一聊,话说有很多数据结构都在玩组合拳,比如说:块状链表,块状数组,当然还有本篇的双端队列,是的,它就是 栈和队列的组合体. 一:概念 我们知道普通队列是限制级的一端进,另一端出的FIFO形式,栈是一端进出的LIFO形式,而双端队列就没有这样的限制级,也就是我们可以在 队列两端进行

【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】

[059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 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,