leetcode-6111:螺旋矩阵 IV

简介: leetcode-6111:螺旋矩阵 IV

题目

题目连接

给你两个整数:mn ,表示矩阵的维数。

另给你一个整数链表的头节点 head

请你生成一个大小为 m x n 的螺旋矩阵,矩阵包含链表中的所有整数。链表中的整数从矩阵 左上角 开始、顺时针 按 螺旋 顺序填充。如果还存在剩余的空格,则用 -1 填充。

返回生成的矩阵。

示例 1:

输入:m = 3, n = 5, head = [3,0,2,6,8,1,7,9,4,2,5,5,0]
输出:[[3,0,2,6,8],[5,0,-1,-1,1],[5,2,4,9,7]]
解释:上图展示了链表中的整数在矩阵中是如何排布的。
注意,矩阵中剩下的空格用 -1 填充。

示例 2:

输入:m = 1, n = 4, head = [0,1,2]
输出:[[0,1,2,-1]]
解释:上图展示了链表中的整数在矩阵中是如何从左到右排布的。 
注意,矩阵中剩下的空格用 -1 填充。

解题

方法一:模拟

螺旋矩阵系列题目都差不多,无非是用链表来取值。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> spiralMatrix(int m, int n, ListNode* head) {
        vector<vector<int>> matrix(m,vector<int>(n,-1));
        vector<vector<int>> dirs={{0,1},{1,0},{0,-1},{-1,0}};
        int x=0,y=0;
        int cur_d=0;
        int top=0,down=m-1,left=0,right=n-1;
        ListNode* cur=head;
        while(cur){
            matrix[x][y]=cur->val;
            if(cur_d==0&&y==right){
                top++;
                cur_d++;
            }
            else if(cur_d==1&&x==down){
                right--;
                cur_d++;
            }
            else if(cur_d==2&&y==left){
                down--;
                cur_d++;
            }
            else if(cur_d==3&&x==top){
                left++;
                cur_d++;
            }
            cur_d%=4;
            x+=dirs[cur_d][0];
            y+=dirs[cur_d][1];
            cur=cur->next;
        }
        return matrix;
    }
};
相关文章
|
1月前
leetcode-1345:跳跃游戏 IV
leetcode-1345:跳跃游戏 IV
31 0
|
5天前
leetcode54螺旋矩阵题解
leetcode54螺旋矩阵题解
10 2
|
15天前
|
算法 机器人 数据挖掘
LeetCode题目54:螺旋矩阵【python4种算法实现】
LeetCode题目54:螺旋矩阵【python4种算法实现】
|
15天前
|
存储 算法 数据可视化
LeetCode 力扣题目:买卖股票的最佳时机 IV
LeetCode 力扣题目:买卖股票的最佳时机 IV
|
19天前
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
|
1月前
|
算法
leetcode代码记录(买卖股票的最佳时机 IV
leetcode代码记录(买卖股票的最佳时机 IV
24 2
|
1月前
|
SQL
leetcode-SQL-550. 游戏玩法分析 IV
leetcode-SQL-550. 游戏玩法分析 IV
32 1
|
1月前
|
Java
2454. 下一个更大元素 IV --力扣 --JAVA
给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数,你必须找到对应元素的 第二大 整数。 如果 nums[j] 满足以下条件,那么我们称它为 nums[i] 的 第二大 整数: j > i nums[j] > nums[i] 恰好存在 一个 k 满足 i < k < j 且 nums[k] > nums[i] 。 如果不存在 nums[j] ,那么第二大整数为 -1 。 比方说,数组 [1, 2, 4, 3] 中,1 的第二大整数是 4 ,2 的第二大整数是 3 ,3 和 4 的第二大整数是 -1 。 请你返回一个整数数组 answer ,其中 answer
45 1
2454. 下一个更大元素 IV --力扣 --JAVA
|
1月前
代码随想录Day42 动态规划10 LeetCode T123 买卖股票的最佳时机III T188买卖股票的最佳时机IV
代码随想录Day42 动态规划10 LeetCode T123 买卖股票的最佳时机III T188买卖股票的最佳时机IV
38 0
|
1月前
|
测试技术
代码随想录 Day37 完全背包理论基础 卡码网T52 LeetCode T518 零钱兑换II T377 组合总和IV
代码随想录 Day37 完全背包理论基础 卡码网T52 LeetCode T518 零钱兑换II T377 组合总和IV
39 0