LeetCode 记录。

  1. 使用单调栈求坡的最大宽度。

  2. 填充每个节点的下一个右侧节点指针 II:
    给定一个二叉树,填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。

  3. 数字范围按位与:
    给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。

  4. 清空 vector 元素并释放空间。

    1
    2

    vector<int> ().swap (Vector);

  5. 重新排列单词间的空格。
    使用流区分字符和空格;string 的创建方式。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    string reorderSpaces (string text) {
    vector<string> str_vec;
    int count = 0;
    string word, ans;
    stringstream in (text);
    while (in >> word)
    {
    str_vec.push_back (word);
    count += word.size ();
    }

    if (str_vec.size () == 1)
    ans = str_vec [0];
    else
    {
    string space ((text.size () - count)/(str_vec.size () - 1), ' ');
    for (int i =0; i< str_vec.size () - 1; i++)
    ans += str_vec [i] + space;
    ans += str_vec.back ();
    }
    return ans + string (text.size () - ans.size (), ' ');
    }

  6. 数组的相对排序。
    unordered_map,hash 表的使用;sort 的自定义排序方法。

  7. 旋转数字
    8.Lambda 表达式
    该表达式的使用
    9.c++ 二分查找函数
    lower_bound ()、upper_bound ()、equal_range () 以及 binary_search ()。

  8. 前缀和矩阵

    1
    2
    3

    sum = A [x1..x2][y1..y2]
    = P [x2][y2] - P [x1 - 1][y2] - P [x2][y1 - 1] + P [x1 - 1][y1 - 1]

  9. 差分数组
    有利于对固定数组大量做区间加减并查询

  10. 前缀和

更新于