当前位置:网站首页>Leetcode-6111: spiral matrix IV

Leetcode-6111: spiral matrix IV

2022-07-05 06:09:00 Chrysanthemum headed bat

subject

Topic linking
Here are two integers :m and n , Represents the dimension of the matrix .

Another head node of the integer linked list head .

Please generate a size of m x n The spiral matrix of , The matrix contains all integers in the linked list . The integers in the linked list are from the matrix top left corner Start 、 Clockwise Press screw Fill in order . If there are still remaining spaces , Then use -1 fill .

Return the generated matrix .

Example 1:
 Insert picture description here

 Input :m = 3, n = 5, head = [3,0,2,6,8,1,7,9,4,2,5,5,0]
 Output :[[3,0,2,6,8],[5,0,-1,-1,1],[5,2,4,9,7]]
 explain : The figure above shows how the integers in the linked list are arranged in the matrix .
 Be careful , The remaining spaces in the matrix are used  -1  fill .

Example 2:
 Insert picture description here

 Input :m = 1, n = 4, head = [0,1,2]
 Output :[[0,1,2,-1]]
 explain : The figure above shows how the integers in the linked list are arranged from left to right in the matrix . 
 Be careful , The remaining spaces in the matrix are used  -1  fill .

 Insert picture description here

Problem solving

Method 1 : simulation

Spiral matrix series topics are similar , It's nothing more than using a linked list to get values .

/** * 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;
        
    }
};
原网站

版权声明
本文为[Chrysanthemum headed bat]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207050546085297.html