class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> re;
for(int i=left; i<=right;i++){
int temp=i;
while(temp !=0 && temp %10 != 0){
if(i % (temp % 10) != 0) break;
temp = temp / 10;
}
if(temp == 0) re.push_back(i);
}
return re;
}
};
这个题竟然做不出来。
自己写了个调用子函数:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> res;
for (int i = left; i <= right; i++) {
if (isSelfDividingNumbers(i))
res.push_back(i);
}
return res;
}
bool isSelfDividingNumbers(int i)
{
if (i%10)
{
int temp=i;
if(temp!=0)
{
if(i%(temp%10)!=0)
return false;
temp=temp/10;
}
if(temp==0)
return true;
}
}
};
返回值写的不对。
参考百度写了另一个答案:
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> res;
for (int i = left; i <= right; i++) {
if (isSelfDividingNumbers(i))
res.push_back(i);
}
return res;
}
bool isSelfDividingNumbers(int i)
{
int temp=i;
while(temp%10)
{
if(i%(temp%10)!=0)
return false;
temp=temp/10;
}
return true;
}
};
submission不行;
自己找出来问题;判断语句不对:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> res;
for (int i = left; i <= right; i++) {
if (isSelfDividingNumbers(i))
res.push_back(i);
}
return res;
}
bool isSelfDividingNumbers(int i)
{
int temp=i;
while(temp)
{
if(temp%10==0||i%(temp%10)!=0)
return false;
temp=temp/10;
}
return true;
}
};
更简洁的答案:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> res;
for (int i = left; i <= right; i++) {
if (isSelfDividingNumbers(i))
res.push_back(i);
}
return res;
}
bool isSelfDividingNumbers(int nums)
{
int temp=nums,digit=0;
while(temp)
{
digit=temp%10;
if(digit==0||nums%digit!=0)
return false;
temp=temp/10;
}
return true;
}
};