leetcode 32.最长有效括号

class Solution
{
public:
    int longestValidParentheses(string &s)
    {
        stack<int> zz;
        int m = 0;
        for (auto &i : s)
        {

            if (i == '(')
            {

                zz.push(0);
            }
            else
            {
                int temp = 0;
                bool flag = false;
                while (!zz.empty())
                {
                    int temp2 = zz.top();

                    if (temp2 == 0)
                    {
                        if (flag)
                            break;
                        flag = true;
                        temp += 2;
                    }
                    else
                    {
                        temp += temp2;
                    }
                    zz.pop();
                }
                if (flag)
                {
                    zz.push(temp);
                    m = max(temp, m);
                }
                else
                {
                    // while (!zz.empty())
                    //     zz.pop();
                    zz={};                    
                }
            }
        }
        return m;
    }
};

C++清空std::stack

如存在一个

stack<int> a;

由于stack没有clear函数,可以使用以下方法进行清空

a={};

发布日期:
分类:C++

leetcode 25.K个一组翻转链表

/*
 * @lc app=leetcode.cn id=25 lang=cpp
 *
 * [25] K 个一组翻转链表
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */

class Solution
{
private:
    static ListNode *a[5000];

public:
    ListNode *&reverseKGroup(ListNode *&head, int &k)
    {

        ListNode *temp = head;
        for (int i = 0; i < k; ++i)
        {
            if (temp != nullptr)
            {
                a[i] = temp;
                temp = temp->next;
            }
            else
                return head;
        }
        head = a[k - 1];
        a[0]->next = head->next;
        for (int i = k - 1; i > 0; --i)
        {
            a[i]->next = a[i - 1];
        }
        temp = a[0];

        reverseKGroup(temp->next, k);
        return head;
    }
};
ListNode *Solution::a[];

// @lc code=end

最开始的时候使用了

static vector<ListNode*> a(k);

运行出错,折腾了半天,后来才明白leetcode的测试程序应该是在一个程序下换不同的数组跑,导致后续的数据运行时vector越界了–

leetcode 12.整数转罗马数字 无脑版代码

/*
 * @lc app=leetcode.cn id=12 lang=cpp
 *
 * [12] 整数转罗马数字
 */

// @lc code=start
#include <iostream>
using namespace std;
class Solution
{
public:
    string r;
    string intToRoman(int &num)
    {
        while (num > 0)
        {
            if (num >= 1000)
            {
                r += 'M';
                num -= 1000;
            }
            else if (num >= 900)
            {
                r += "CM";
                num -= 900;
            }
            else if (num >= 500)
            {
                r += 'D';
                num -= 500;
            }
            else if (num >= 400)
            {
                r += "CD";
                num -= 400;
            }
            else if (num >= 100)
            {
                r += 'C';
                num -= 100;
            }
            else if (num >= 90)
            {
                r += "XC";
                num -= 90;
            }
            else if (num >= 50)
            {
                r += 'L';
                num -= 50;
            }
            else if (num >= 40)
            {
                r += "XL";
                num -= 40;
            }
            else if (num >= 10)
            {
                r += 'X';
                num -= 10;
            }
            else if (num >= 9)
            {
                r += "IX";
                num -= 9;
            }
            else if (num >= 5)
            {
                r += 'V';
                num -= 5;
            }
            else if (num >= 4)
            {
                r += "IV";
                num -= 4;
            }
            else
            {
                r += 'I';
                num -= 1;
            }
        }
        return r;
    }
};
// @lc code=end

leetcode 10.正则表达式

#include <iostream>
#include <vector>
#include <functional>
using namespace std;
class Solution
{
public:
    bool isMatch(string &s, string &p)
    {
        int sSize = s.size();
        int pSize = p.size();
        vector<vector<int>> a(sSize + 1, vector(pSize + 1, 0));
        a[0][0] = 1;
        function<bool(int, int)> match = [&](int n, int m) {
            if (n < 0 || m < 0)
                return false;
            if (a[n][m] == 1)
                return true;
            if (a[n][m] == -1)
                return false;
            if (n > 0 && m > 0)
            {
                if (s[n - 1] == p[m - 1] || p[m - 1] == '.')
                    if (match(n - 1, m - 1))
                    {
                        a[n][m]=1;
                        return true;
                    }
            }
            if (m > 1)
            {
                if (p[m - 1] == '*')
                {
                    if (n > 0)
                    {
                        if (s[n - 1] == p[m - 2] || p[m - 2] == '.')
                            if (match(n - 1, m))
                                {
                        a[n][m]=1;
                        return true;
                    }
                    }
                    if (match(n, m - 2))
                        {
                        a[n][m]=1;
                        return true;
                    }
                }
            }
            a[n][m]=-1;
            return false;
        };
        return match(sSize, pSize);
    }
};

从一加5t(835)换到k40pro(888)的一点感受

上个月,我的一加5t(高通835)坏了,买了k40pro(高通888)。写一下一些感受。

其中移动端设备的飞速发展,安装软件比之前快多了,一查888比835单核性能都快翻了3倍了。。。对比下相同时间跨度的pc端真是一眼难进啊。

然后有一点要吐槽的,ab分区的更新方式是真tmd慢。。。更新一次感觉都能顶的上传统rec备份+更新了。。。

发布日期:
分类:soc手机

随手一写

又是没学下去的一天。明天必须认真的学一整天。现在好烦,睡觉睡觉

发布日期:
分类:心情

关于房产的一点见解

怎么想根本不重要,房子目前就是投资品。对普通公民宣扬“房Z不C”在我看来有点掩耳盗铃。如果真想达到这样的目的,可能需要通过一些办法改变房子是投资品的这一特性。

住需要的是租房,买房自己住=自己租给自己。

发布日期:
分类:默认

预设立场,然后倾向相信符合立场的论据,倾向于否定与立场不符的论据,给提出不同立场的人扣自认为不好的帽子;这些似乎是人类的通病,这也阻碍着一个人看清事实。

发布日期:
分类:人类