题目:
中有 std::lcm 和 std::gcd 分别用于计算最小公倍数和最大公约数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <numeric> #include <vector>
using std::vector;
class Solution { public: vector<int> replaceNonCoprimes(vector<int> &nums) { int n = nums.size(); int top = 0; for (int i = 1; i < n; i++) { while (top >= 0 and std::gcd(nums[top], nums[i]) > 1) { nums[i] = std::lcm(nums[top], nums[i]); top--; } nums[++top] = nums[i]; } nums.resize(top + 1); return nums; } };
|