给定一个有序的正数数组arr和一个正数range,如果可以自由选择arr中的数字,想累加得 到 1~range 范围上所有的数,返回arr最少还缺几个数。
#include <iostream>
#include <vector>using namespace std;void func1(std::vector<int>& nums, int range) {std::vector<int> result;int touch = 0;int patch = 0;for (int i = 0; i < nums.size(); ++i) {while (touch + 1 < nums[i]) {int num = touch + 1;++patch;result.push_back(num);touch += num;if (touch >= range) {break;}}touch += nums[i];if (touch >= range) {break;}}while (touch < range) { // touch + 1 <= rangeint num = touch + 1;++patch;result.push_back(num);touch += num;}
}void func(int range) {int touch = 0;std::vector<int> result;while (touch < range) {int num = touch+1;result.push_back(num);touch += num;}for (auto num : result) {cout << num << " ";}cout << endl;
}int main() {func(100);return 0;
}
touch表示能够到最大的数字
https://blog.csdn.net/z1171127310/article/details/127966829