#3458. [GESP202412 五级 C++] 第 15 题

[GESP202412 五级 C++] 第 15 题

小杨编写了一个如下的高精度减法函数:

vector<int> highPrecisionSubtract(vector<int> a, vector<int> b) {
    vector<int> result;
    int borrow = 0;

    for (int i = 0; i < a.size(); ++i) {
        int digitA = a[i];
        int digitB = i < b.size() ? b[i] : 0;

        int diff = digitA - digitB - borrow;
        if (diff < 0) {
            diff += 10;
            borrow = 1;
        }
        else {
            borrow = 0;
        }

        result.push_back(diff);
    }

    while (result.size() > 1 && result.back() == 0) {
        result.pop_back();
    }

    return result;
}

下面说法,正确的是( )。

{{ select(1) }}

  • 如果数组 a 表示的整数小于 b 表示的整数,代码会正确返回二者的差为负数。
  • 代码假设输入数字是以倒序存储的,例如 500 存储为 {0, 0, 5}
  • 代码的时间复杂度为 O(a.size()+b.size())O(a.size() + b.size())
  • 当减法结果为 0 时,结果数组仍然会存储很多个元素 0。