mirror of
https://github.com/lWolvesl/leetcode.git
synced 2026-01-13 02:38:37 +08:00
init
This commit is contained in:
50
23/04/1019.c
Normal file
50
23/04/1019.c
Normal file
@@ -0,0 +1,50 @@
|
||||
struct ListNode
|
||||
{
|
||||
int val;
|
||||
struct ListNode *next;
|
||||
};
|
||||
|
||||
typedef struct Pair {
|
||||
int first;
|
||||
int second;
|
||||
} Pair;
|
||||
|
||||
int getLength(struct ListNode* head){
|
||||
int len = 0;
|
||||
ListNode* node = head;
|
||||
while (node.next)
|
||||
{
|
||||
node = node.next;
|
||||
len++;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
int* nextLargerNodes(struct ListNode* head, int* returnSize){
|
||||
int len = 0;
|
||||
struct ListNode* cur = head;
|
||||
while (cur) {
|
||||
cur = cur->next;
|
||||
len++;
|
||||
}
|
||||
int* ans = (int *)calloc(len, sizeof(int));
|
||||
Pair stack[len];
|
||||
int top = 0, pos = 0;
|
||||
|
||||
cur = head;
|
||||
int idx = -1;
|
||||
while (cur) {
|
||||
++idx;
|
||||
ans[pos++] = 0;
|
||||
while (top > 0 && stack[top - 1].first < cur->val) {
|
||||
ans[stack[top - 1].second] = cur->val;
|
||||
top--;
|
||||
}
|
||||
stack[top].first = cur->val;
|
||||
stack[top].second = idx;
|
||||
top++;
|
||||
cur = cur->next;
|
||||
}
|
||||
*returnSize = len;
|
||||
return ans;
|
||||
}
|
||||
Reference in New Issue
Block a user