【每日刷题】Day53

2024-06-01 1598阅读

【每日刷题】Day53

【每日刷题】Day53

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 1019. 链表中的下一个更大节点 - 力扣(LeetCode)

2. 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode)

3. 412. Fizz Buzz - 力扣(LeetCode)

【每日刷题】Day53

1. 1019. 链表中的下一个更大节点 - 力扣(LeetCode)

//思路:栈。将链表中的元素存入一个数组。遍历这个数组,将数组元素的下标入栈。

//入栈情况:① 如果当前栈中没有元素,直接入栈  ② 如果数组当前元素<数组以当前栈顶元素为下标的元素,直接入栈。

//出栈情况:如果数组当前元素>数组以当前栈顶元素为下标的元素,将答案数组中当前栈顶元素为下标的位置放为数组当前元素(也就是找到了下一个更大元素),并继续从栈顶往栈底比较,直到遇到数组当前元素<数组以当前栈顶元素为下标的元素的情况,break跳出循环,并将数组当前元素下标放入栈顶。

//当遍历完数组后,如果栈中还有元素,说明数组中以这些元素为下标的元素没有找到下一个更大的值,将答案数组中以栈中元素为下标的位置置为0。

typedef struct ListNode LN;

 

int* nextLargerNodes(struct ListNode* head, int* returnSize)

{

    int arr[10000] = {0};

    int stack[10000] = {0};

    int* ans = (int*)malloc(sizeof(LN)*10000);

    int num = 0;

    int count = 0;

    LN* pmove = head;

    while(pmove)//将链表元素存入数组

    {

        arr[num++] = pmove->val;

        pmove = pmove->next;

    }

    for(int i = 0;i

p                if(arr[i]>arr[stack[count-1]])

                    ans[stack[count-1]] = arr[i];

                else

                    break;

                count--;

            }

            stack[count++] = i;//将当前数组元素下标放入栈顶

        }

    }

    for(int i = 0;i

p    assert(qe);/p p    qe->phead = NULL;

    qe->ptail = NULL;

    qe->size = 0;

}

 

//判断队列是否为空

bool QueEmpty(QE* qe)

{

    assert(qe);

    return qe->size == 0;

}

 

//入列

void QuePush(QE* qe, QDataType x)

{

    assert(qe);

    LN* newnode = (LN*)malloc(sizeof(LN));

    if (newnode == NULL)

    {

        perror("malloc:");

        exit(-1);

    }

    newnode->next = NULL;

    newnode->val = x;

    if (qe->phead == NULL)

    {

        qe->phead = qe->ptail = newnode;

    }

    else

    {

        qe->ptail->next = newnode;

        qe->ptail = qe->ptail->next;

    }

    qe->size++;

}

//出列

void QuePop(QE* qe)

{

    assert(qe);

    assert(qe->phead != NULL);

    assert(qe->size > 0);

    LN* tmp = qe->phead->next;

    free(qe->phead);

    qe->phead = tmp;

    qe->size--;

}

 

//获取列头元素

QDataType QueGetHead(QE* qe)

{

    assert(qe);

    assert(qe->phead != NULL);

    return qe->phead->val;

}


 

struct Node* connect(struct Node* root)

{

    if(!root)

        return NULL;

    QDataType arr[10000] = {0};

    int count = 0;

    root->next = NULL;

    QE q;

    QueInit(&q);

    QuePush(&q,root);

    while(!QueEmpty(&q))//入列

    {

        QDataType tmp = QueGetHead(&q);

        arr[count++] = QueGetHead(&q);//将队头元素存入数组中

        QuePop(&q);

        if(tmp->left)//继续层序遍历

            QuePush(&q,tmp->left);

        if(tmp->right)

            QuePush(&q,tmp->right);

    }

    int i = 1;

    int flag = 1;

    while(i

p            arr[i]->next = arr[i+1];

            i++;

            j--;

        }

        arr[i++]->next = NULL;//每一层的最后一个结点的next为NULL

        flag++;

    }

    return root;

}

3. 412. Fizz Buzz - 力扣(LeetCode)

//思路:题目不难,主要考察对动态内存管理知识的理解能力。

char ** fizzBuzz(int n, int* returnSize)

{

    char** ans = (char**)malloc(sizeof(char*)*n);//申请一块空间,存放指针

    for(int i = 0;i

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]