給定一個有序的正數數組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