class Solution {
public:
int nthUglyNumber(int n) {
vector<int> ug;
ug.push_back(1);
int i = 0, j = 0, k = 0;
// * 第一个丑数是1 所以只用遍历n - 1次
while(--n)
{
int p = min(min(ug[i] * 2, ug[j] * 3), ug[k] * 5);
ug.push_back(p);
if(p % 2 == 0) i++;
if(p % 3 == 0) j++;
if(p % 5 == 0) k++;
}
return ug.back();
}
};
268 - 丢失的数字
[0, n] 所有数的和 (n + 0) * (n + 1) / 2
遍历一遍数组 从所有数的和中减去 剩下的就是缺少的元素了
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size();
int res = n * (n + 1) / 2;
for(int x : nums)
res -= x;
return res;
}
};