LeetCode 知识点集成

2023-04-18 15:29:28 浏览数 (1)

代码语言:javascript复制
1. 合法的括号序列(LeetCode 301)
    左右括号数量相同。任意一个前缀中,左括号数量 >= 右括号数量

2. 前缀和(一维,二维)

3. 高精度加法(用数组模拟加法)
    string add(string x, string y)
    {
        vector<int> A, B, C;
        for(int i = x.size() - 1; i >= 0; i--) A.push_back(x[i] - '0');
        for(int i = y.size() - 1; i >= 0; i--) B.push_back(y[i] - '0');

        for(int i = 0, t = 0; i < A.size() || i < B.size() || t; i  )
        {
            if(i < A.size()) t  = A[i];
            if(i < B.size()) t  = B[i];
            C.push_back(t % 10);
            t /= 10;
        }

        string s;
        for(int i = C.size() - 1, i >= 0; i--)
            s  = to_string(C[i]);

        return s;
    }

4. 对于树状数组和线段树,能用树状数组就用它
    int lowbit(x){
        return x & (-x);
    }
    求前缀和: for(int i = x; i >= 0; i -= lowbit(i)) res  = tr[i];
    某一个数加上一个数 v: for(int i = x; i <= n; i  = lowbit(i)) tr[i]  = v

0 人点赞