解法1
class Solution {
public:
vector<int> powerfulIntegers(int x, int y, int bound) {
unordered_set<int> result;
int num=0;
for(int i=0;;i++)
for(int j=0;;j++){
num=pow(x,i)+pow(y,j);
if(j==0&&num>bound) return result.ToArray(result.begin(),result.end());
else if(num<=bound)
result.insert(num);
else break; //退出j循环,i++
}
return result.toArray();
}
};
解法2
class Solution {
public:
vector<int> powerfulIntegers(int x, int y, int bound) {
unordered_set<int> result;
int num=0;
for(int i=0;;i++)
for(int j=0;;j++){
num=pow(x,i)+pow(y,j);
if(j==0&&num>bound) {
vector<int> res(result.begin(),result.end());
return res;
}
else if(num<=bound)
result.insert(num);
else break; //退出j循环,i++
}
vector<int> res(result.begin(),result.end());
return res;
}
};
解法3
class Solution {
public:
vector<int> powerfulIntegers(int x, int y, int bound) {
unordered_set<int> result;
// int num=0;
for(int i=0;pow(x,i)<bound;i++)
for(int j=0;pow(y,j)<=bound-pow(x,i);j++){
result.insert(pow(x,i)+pow(y,j)); // 重复num
}
vector<int> res(result.begin(),result.end());
return res;
}
};
还是超出时间限制。
原因是x=1或y=1时,i++, j++进入死循环
class Solution {
public:
vector<int> powerfulIntegers(int x, int y, int bound) {
unordered_set<int> result;
// int num=0;
for(int i=0;pow(x,i)<bound;i++)
{ for(int j=0;pow(y,j)<=bound-pow(x,i);j++){
result.insert(pow(x,i)+pow(y,j)); // 重复num
if(y==1) break;
}
if(x==1) break;
}
vector<int> res(result.begin(),result.end());
return res;
}
};