mirror of
				https://git.wolves.top/wolves/leetcode.git
				synced 2025-11-04 09:16:32 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			960 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			960 B
		
	
	
	
		
			C
		
	
	
	
	
	
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;
 | 
						|
} |