503-Le prochain plus grand élément II

table des matières

Description du titre

Étant donné un tableau en boucle (l'élément suivant du dernier élément est le premier élément du tableau), affiche le prochain élément plus grand de chaque élément. L'élément le plus grand suivant du nombre x est dans l'ordre de parcours du tableau, et le premier nombre après ce nombre est plus grand que lui, ce qui signifie que vous devez rechercher le nombre supérieur suivant de manière cyclique. S'il n'existe pas, -1 est affiché.

Exemple 1:
Entrée: [1,2,1]
Sortie: [2, -1,2]
Explication:
Le nombre supérieur suivant du premier 1 est 2; le nombre 2 ne peut pas trouver le nombre supérieur suivant;
Le nombre supérieur suivant de le second 1 doit être recherché dans une boucle, et le résultat est également 2.

Source: LeetCode
Lien: https://leetcode-cn.com/problems/next-greater-element-ii Le
copyright est la propriété de LeetCode . Pour les réimpressions commerciales, veuillez contacter l'autorisation officielle. Pour les réimpressions non commerciales, veuillez indiquer la source.

réponse

  1. Référez-vous à la solution officielle
  2. Implémentation du langage C
int* nextGreaterElements(int* nums, int numsSize, int* returnSize){
    
    
    *returnSize=numsSize;
    int* next=(int *)malloc(numsSize*sizeof(int));
    int* stack=(int *)malloc(numsSize*sizeof(int));//栈
    int top=-1;//栈指针

    for(int i=0;i<numsSize;i++)
    {
    
    
        while(top>-1&&nums[stack[top]]<nums[i])//当前元素比栈顶元素大则栈顶元素出栈
        {
    
    
            next[stack[top--]]=nums[i];
        }
        stack[++top]=i;//当前元素入栈
    }
    //循环查找
    for(int i=0;top>-1&&i<stack[top];i++)
    {
    
    
        while(top>-1&&nums[stack[top]]<nums[i])//当前元素比栈顶元素大则栈顶元素出栈
        {
    
    
            next[stack[top--]]=nums[i];
        }
    }
    //剩下无下一个更大元素
    while(top>-1)
    {
    
    
        next[stack[top--]]=-1;
    }
    free(stack);
    return next;
}
  1. L'idée générale: utilisez la pile pour stocker l'indice du tableau, et comparez l'élément correspondant à l'indice en haut de la pile avec l'élément courant. La taille de l'élément correspondant à l'indice stocké dans la pile n'augmente pas de manière monotone.

Je suppose que tu aimes

Origine blog.csdn.net/qq_36439722/article/details/112254065
conseillé
Classement