【每日刷题】Day95

【每日刷题】Day95

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 链表内指定区间反转_牛客题霸_牛客网 (nowcoder.com)

2. 面试题 02.05. 链表求和 - 力扣(LeetCode)

3. 1614. 括号的最大嵌套深度 - 力扣(LeetCode)

1. 链表内指定区间反转_牛客题霸_牛客网 (nowcoder.com)

//思路:转数组反转。

//将链表转为数组,对数组反转,再将数组转为链表。

class Solution {

public:

//区间反转

    void Reverse(int* arr,int left,int right)

    {

        while(left<right)

        {

            int tmp = arr[left];

            arr[left] = arr[right];

            arr[right] = tmp;

            left++;

            right--;

        }

    }

    typedef ListNode LN;

    ListNode* reverseBetween(ListNode* head, int m, int n)

    {

        LN* phead = head;

        int arr[1001] = {0};

        int count=  0;

//链表转数组

        while(phead)

        {

            arr[count++] = phead->val;

            phead = phead->next;

        }

        phead = head;

//反转数组

        Reverse(arr,m-1,n-1);

//数组转链表

        for(int i = 0;i<count;i++)

        {

            phead->val = arr[i];

            phead = phead->next;

        }

        return head;

    }

};

2. 面试题 02.05. 链表求和 - 力扣(LeetCode)

//思路:加法运算。

//遍历两个链表,计算每一位的大小存入新的链表中,判断是否进位。

class Solution {

public:

    typedef ListNode LN;

    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)

    {

        LN* Sentry = new LN;

        LN* pmove = Sentry;

        int flag = 0;

        while(l1||l2)

        {

            LN* newnode = new LN;

            int ret1 = !l1?0:l1->val;

            int ret2 = !l2?0:l2->val;

            newnode->val = (ret1+ret2+flag)%10;

            newnode->next = nullptr;

            pmove->next= newnode;

            pmove = pmove->next;

//进位

            if(ret1+ret2+flag>=10)

                flag = 1;

            else

                flag = 0;

            if(l1)

                l1 = l1->next;

            if(l2)

                l2 = l2->next;

        }

//遍历完后flag还为1,则最高位为1

        if(flag)

        {

            LN* newnode = new LN;

            newnode->val = 1;

            newnode->next = nullptr;

            pmove->next = newnode;

        }

        return Sentry->next;

    }

};

3. 1614. 括号的最大嵌套深度 - 力扣(LeetCode)

//思路:遍历+记数。记录最大值。

class Solution {

public:

    int maxDepth(string s)

    {

        int ans = 0;

        int tmp = 0;

        for(int i = 0;i<s.size();i++)

        {

//记录嵌套的"("

            if(s[i]=='(')

            {

                tmp++;

//记录最大值

                ans = ans>=tmp?ans:tmp;

            }

//遇到")"抵消一个嵌套的"("

            if(s[i]==')')

                tmp--;

        }

        return ans;

    }

};

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值