/**
* 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) {}
* };
*/classSolution{public:
vector<vector<int>>spiralMatrix(int m,int n, ListNode* head){
vector<vector<int>>ans(m,vector<int>(n,-2));int dx[]={0,1,0,-1}, dy[]={1,0,-1,0};auto p = head;for(int i =0, x =0, y =0, d =0; i < m * n; i ++){int num =-1;if(p !=NULL) num = p -> val, p = p -> next;
ans[x][y]= num;int a = x + dx[d], b = y + dy[d];if(a <0|| a >= m || b <0|| b >= n || ans[a][b]!=-2){
d =(d +1)%4;
a = x + dx[d], b = y + dy[d];}
x = a, y = b;}return ans;}};